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

 

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

 

posted @ 2017-12-19 02:52  逸朵  阅读(186)  评论(0)    收藏  举报