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.
class Solution {
public int countUnivalSubtrees(TreeNode root) {
int[] res = new int[1];
postOrderTraverse(root, res);
return res[0];
}
public boolean postOrderTraverse(TreeNode node, int[] res) {
if (node == null) {
return true;
}
boolean left = postOrderTraverse(node.left, res);
boolean right = postOrderTraverse(node.right, res);
if (left && right) {
if (node.left != null && node.left.val != node.val ||
node.right != null && node.right.val != node.val) {
return false;
}
++res[0];
return true;
}
return false;
}
}