250. 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.

Solution:递归 post-order 分治 upwards上传

思路:
Divide: left sub and right sub
Conquer: ifSame(boolean left, boolean right), int count, and then uploads
Time Complexity:T(N) = 2T(N / 2) + O(1) => O(N)
Space Complexity: O(N)

Solution Code:

public class Solution {
    public int countUnivalSubtrees(TreeNode root) {
        int[] count = new int[1];
        helper(root, count);
        return count[0];
    }
    
    private boolean helper(TreeNode node, int[] count) {
        if (node == null) return true;

        // divide
        boolean left = helper(node.left, count);
        boolean right = helper(node.right, count);
        
        // conquer (ifSame(boolean left, boolean right), int count), 
        // and uploads ifSame & count 
        if (left && right) {
            if (node.left != null && node.val != node.left.val) {
                return false;
            }
            if (node.right != null && node.val != node.right.val) {
                return false;
            }
            count[0]++;
            return true;
        }
        return false;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • Given a binary tree, count the number of uni-value subtre...
    Jeanz阅读 780评论 0 0
  • 那些死板的老古董就是应该被集体调走。”李亦豆穿着充满“太阳的味道”的篮球服坐在林伊童的桌子上发表着长篇大论。...
    蓝莓林阅读 313评论 2 2
  • 若是问我原名 不敢再称流星 怕惊扰静谧的夜色 怕听到尘土的笑声 怕引来天上的故友 卖了同情 再连忙否定 就叫我仆人...
    周牙阅读 147评论 0 1
  • 一恍神,九月 已过去,9月状态不算太好,失眠,特别是后面2个星期每天1-2点才睡,于是也没法早起了。回顾整个九月,...
    trista_chow阅读 223评论 0 0