递归:
class Solution {// 判断二叉搜索树是否有效public boolean isValidBST(TreeNode root) {// 递归地检查以 root 为根的子树是否满足 BST 的性质// 同时定义一个范围 [Long.MIN_VALUE, Long.MAX_VALUE] 来约束节点的值return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);}// 判断以 root 为根的子树是否满足 BST 性质// 同时受到 lower 和 upper 的约束,确保每个节点的值都不小于 lower 且不大于 upperpublic boolean isValidBST(TreeNode root, long lower, long upper) {// 如果当前节点为空,说明没有违反 BST 性质,返回 trueif (root == null) return true;// 检查当前节点的值是否在允许的范围内// 如果不在范围内,说明违反了 BST 性质,返回 falseif (root.val <= lower || root.val >= upper) {return false;}// 递归地检查左子树,确保左子树的所有节点值都小于当前节点的值// 同时左子树的上下界变为 lower 和 root.valboolean left = isValidBST(root.left, lower, root.val);// 递归地检查右子树,确保右子树的所有节点值都大于当前节点的值// 同时右子树的上下界变为 root.val 和 upperboolean right = isValidBST(root.right, root.val, upper);// 如果左子树和右子树都满足 BST 性质,则当前子树也满足 BST 性质// 注意:这里使用逻辑与操作符,只有当左右子树都满足条件时,整个表达式才为 truereturn left && right;}
}