0
点赞
收藏
分享

微信扫一扫

单值二叉树


如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false。

示例 1:

单值二叉树_前序遍历

输入:[1,1,1,1,1,null,1]

输出:true

解答:

// Definition for a binary tree node.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

class Solution {

/***************** 第一种解答方法 *****************************/

public boolean isUnivalTree(TreeNode root) {
if (root == null) {
return true;
}
return isUnivalTree(root,root.val);
}

public boolean isUnivalTree(TreeNode r1,int value) {

if(r1 != null){
return r1.val == value && isUnivalTree(r1.right, value) && isUnivalTree(r1.left, value);
}
return true;
}

}

// Definition for a binary tree node.
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

class Solution {

/****************** 第二种解答方法 *******************************/
ArrayList<Integer> list;

/**
* 判断每一个节点值是否相同
*/
public boolean isUnivalTree(TreeNode root) {

list = new ArrayList<>();
getNodeVal(root);
//每个节点值应当和头结点的值一样
for(int i : list){
if(i != Integer.parseInt(String.valueOf(list.get(0))))
return false;
}
return true;
}

/**
*前序遍历获取所有节点的值,存到ArrayList中
*/
public void getNodeVal(TreeNode root){

if(root != null){
list.add(root.val);
getNodeVal(root.left);
getNodeVal(root.right);
}
}
}


举报

相关推荐

0 条评论