如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
示例 1:
输入:[1,1,1,1,1,null,1]
输出:true
递归
class Solution {
public boolean isUnivalTree(TreeNode root) {
return preOrder(root, root.val);
}
private boolean preOrder(TreeNode root, int target) {
if (root.val != target) {
return false;
}
boolean l = true;
if (root.left != null) {
l = preOrder(root.left, target);
}
boolean r = true;
if (root.right != null) {
r = preOrder(root.right, target);
}
return l && r;
}
}
迭代
class Solution2 {
public boolean isUnivalTree(TreeNode root) {
boolean res = true;
int target = root.val;
Stack<TreeNode> stack = new Stack<>();
while (null != root || !stack.isEmpty()) {
while (null != root) {
if (target != root.val) {
res = false;
}
stack.add(root.right);
root = root.left;
}
root = stack.pop();
}
return res;
}
}
= root.left;
}
root = stack.pop();
}
return res;
}
}