QUESTION:
A binary tree is univalued if every node in the tree has the same value.
Return true
if and only if the given tree is univalued.
Example 1:
Input: [1,1,1,1,1,null,1]
Output: true
Example 2:
Input: [2,2,2,5,2]
Output: false
Note:
- The number of nodes in the given tree will be in the range
[1, 100]
. - Each node’s value will be an integer in the range
[0, 99]
.
EXPLANATION:
其实这个题目一看的话就很容易了。就是在考察二叉树的遍历。但是需要记住的是,判断条件是不同的层级的节点,如果你仅仅是判断左右节点是否相同,那么很容易漏掉节点。
采用递归的方式就可以。
SOLUTION:
class Solution {
public boolean isUnivalTree(TreeNode root) {
if(root == null) return false;
return isUnivalTreeHelper(root.left,root.val)&&isUnivalTreeHelper(root.right,root.val);
}
public static boolean isUnivalTreeHelper(TreeNode root,int pre){
if(root == null) return true;
if(root.val!=pre) return false;
return isUnivalTreeHelper(root.left,root.val)&&isUnivalTreeHelper(root.right,root.val);
}
}