zoukankan      html  css  js  c++  java
  • LeetCode 250. Count Univalue Subtrees

    原题链接在这里:https://leetcode.com/problems/count-univalue-subtrees/

    题目:

    Given a binary tree, count the number of uni-value subtrees.

    A Uni-value subtree means all nodes of the subtree have the same value.

    For example:
    Given binary tree,

                  5
                 / 
                1   5
               /    
              5   5   5 

    return 4.

    题解:

    bottom-up recursion. dfs返回当前root下是不是univalue tree.

    Time Complexity: O(n).

    Space: O(logn). height of tree.

    AC Java:

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10 class Solution {
    11     public int countUnivalSubtrees(TreeNode root) {
    12         int [] res = {0};
    13         dfs(root, res);
    14         return res[0];
    15     }
    16     
    17     private boolean dfs(TreeNode root, int [] res){
    18         if(root == null){
    19             return true;
    20         }
    21         
    22         boolean left = dfs(root.left, res);
    23         boolean right = dfs(root.right, res);
    24         if(left && right){
    25             if(root.left!=null && root.left.val!=root.val){
    26                 return false;
    27             }
    28             
    29             if(root.right!=null && root.right.val!=root.val){
    30                 return false;
    31             }
    32             
    33             res[0]++;
    34             return true;
    35         }
    36         
    37         return false;
    38     }
    39 }

    类似Longest Univalue Path.

  • 相关阅读:
    混淆代码
    滑动listview隐藏和显示顶部布局
    软件工程基础知识
    模仿QQ左滑删除
    apk签名(不打包)
    常见项目管理名词
    打包
    Banner无限轮播
    微信分享封装类
    自定义数字软键盘
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/5187437.html
Copyright © 2011-2022 走看看