如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 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);
}
}
}