zoukankan      html  css  js  c++  java
  • LeetCode-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:
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public class UniValueCount {
            int value;
            boolean isUniValue;
            int count;
            public UniValueCount(int v, boolean is, int num){
                value = v;
                isUniValue = is;
                count = num;
            }
        }
        public int countUnivalSubtrees(TreeNode root) {
            UniValueCount res = countUnivalRecur(root);
            return res.count;
        }
        
        public UniValueCount countUnivalRecur(TreeNode cur){
            if (cur==null){
                return new UniValueCount(0,false,0);
            }
            if (cur.left==null && cur.right==null){
                return new UniValueCount(cur.val,true,1);
            }
            
            UniValueCount res = new UniValueCount(0,true,0);
            if (cur.left!=null){
                UniValueCount leftRes = countUnivalRecur(cur.left);
                res.isUniValue = res.isUniValue && (leftRes.isUniValue && cur.val==leftRes.value);
                res.count += leftRes.count;
            }
            if (cur.right!=null){
                UniValueCount rightRes = countUnivalRecur(cur.right);
                res.isUniValue = res.isUniValue && (rightRes.isUniValue && cur.val==rightRes.value);
                res.count += rightRes.count;
            }
            if (res.isUniValue){
                res.count++;
                res.value = cur.val;
            }
            return res;
        }
    }
     
     
  • 相关阅读:
    Log4net<转载>
    XSD使用《转载》
    assemble文件中配置
    常用工具《收藏》
    mysql查看所有存储过程,函数,视图,触发器,表《转》
    log4g net 配置
    XSLT使用<转载>
    C#操作xml之xpath语法<收藏>
    如何做镜像服务器
    Android开发之旅:环境搭建及HelloWorld
  • 原文地址:https://www.cnblogs.com/lishiblog/p/5874160.html
Copyright © 2011-2022 走看看