题目: 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
迭代
- 方法一:深度优先搜索
我们先进行一次深度优先搜索,获取这颗树中的所有节点的值。然后,就可以判断所有节点的值是不是都相等了。
List<Integer> data=new ArrayList();
public boolean isUnivalTree(TreeNode root) {
if(null==root){
return true;
}
dfs(root);
for(Integer num:data){
if(num!=data.get(0)){
return false;
}
}
return true;
}
public void dfs(TreeNode root){
if(null!=root){
data.add(root.val);
dfs(root.left);
dfs(root.right);
}
}
- 方法二 :直接递归
先设置一个全局变量。记录第一个节点的值,然后递归遍历看是否相等
int num=0;
public boolean isUnivalTree(TreeNode root) {
if(null==root){
return true;
}
num=root.val;
return helper(root);
}
public boolean helper(TreeNode root){
if(null==root){
return true;
}
return (root.val==num) && helper(root.left) && helper(root.right);
}
网友评论