今天又是一道二叉树的题,也是比较简单的,同样可以利用递归来实现,
还有另外一种解法:现将所有元素放到集合中,之后再判断,比如本例中用到的Set.
题目描述
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true
;否则返回 false
。
示例 1:
img输入:[1,1,1,1,1,null,1]
输出:true
示例 2:
img输入:[2,2,2,5,2]
输出:false
提示:
- 给定树的节点数范围是
[1, 100]
。 - 每个节点的值都是整数,范围为
[0, 99]
。
Solution
1.利用Set元素不重复的特性
private static HashSet<Integer> set;
public static boolean isUnivalTree(TreeNode root) {
set = new HashSet<>();
add(root);
return set.size() == 1;
}
private static void add(TreeNode node) {
if (node != null) {
set.add(node.val);
add(node.left);
add(node.right);
}
}
2.递归实现
public static boolean isUnivalTree1(TreeNode root) {
boolean left = false;
boolean right = false;
if (root.left == null || ((root.val == root.left.val) && isUnivalTree1(root.left))) {
left =true;
}
if (root.right == null || (root.val == root.right.val && isUnivalTree1(root.right))) {
right = true;
}
return left && right;
}
公众号二维码.jpg
网友评论