更多题解尽在 https://sugar.matrixlab.dev/algorithm 每日更新。
组队打卡,更多解法等你一起来参与哦!
解题思路:根据二叉搜索树的定义,存在节点的值大于等于所在树的最大值,小于等于所在树的最小值则返回 false;如果左右节点为叶子节点,则有可能是二叉搜索树。定义一个重载函数递归左右节点即可。这边要注意节点 val 的取值范围。
class Solution {
public boolean isValidBST(TreeNode root) {
return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
}
public boolean isValidBST(TreeNode root, long min, long max) {
// 叶子节点
if (root == null) return true;
// 非叶子节点
if (root.val <= min || root.val >= max) {
return false;
}
return isValidBST(root.left, min, root.val) && isValidBST(root.right, root.val, max);
}
}