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.
Example :
Input: root = [5,1,5,5,5,null,5]
5
/ \
1 5
/ \ \
5 5 5
Output: 4
不解释啦,思路还是一样的,想好Result里面存什么就可以了,每个节点就结合左子树的结果,右子树的结果,和当前的节点情况来创造当前的Result,再返回。最终返回最后的Result,并取出需要的答案即可。
public int countUnivalSubtrees(TreeNode root) {
return helper(root).count;
}
public Result helper(TreeNode root) {
Result res = new Result(true, 0);
if (root == null) return res;
Result left = helper(root.left);
Result right = helper(root.right);
res.isUni = left.isUni && ( root.left == null || root.left.val == root.val) && right.isUni && (root.right == null || root.right.val == root.val);
res.count = res.isUni ? left.count + right.count + 1 : left.count + right.count;
return res;
}
public class Result{
boolean isUni;
int count;
public Result(boolean isUni, int count) {
this.isUni = isUni;
this.count = count;
}
}