题意:给定一个树,判定它是否是二叉搜索树
思路:遍历每一个节点,保证当前节点不大于最大值和不小于最小值,同时根据下一次递归当前节点的左右子树,来跟新最大最小值
思想:先跟遍历
复杂度:时间O(n2),空间O(n)
class Solution {
public boolean isValidBST(TreeNode root) {
long max = (long)Integer.MAX_VALUE + 1;
long min = (long)Integer.MIN_VALUE - 1;
return isValid(root, max, min);
}
boolean isValid(TreeNode root, long max, long min) {
if(root == null)
return true;
if((long)root.val >= max || (long)root.val <= min)
return false;
return isValid(root.left, (long) root.val, min) &&
isValid(root.right, max, (long) root.val);
}
}
网友评论