思路:
有效 二叉搜索树定义如下:
- 节点的左子树只包含 小于 当前节点的数。
- 节点的右子树只包含 大于 当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
所以对于当前节点来说:我的左节点要小于我,我的右节点要大于我,我左节点,右节点也是二叉搜索树。如果当前节点为null,直接返回。代码如下:
class Solution {
public boolean isValidBST(TreeNode root) {
if (root==null){
return false;
}
return isValidBST(root,Long.MIN_VALUE,Long.MAX_VALUE);
}
private boolean isValidBST(TreeNode node, long min,long max) {
if (node==null){
return true;
}
if (node.val<=min||node.val>=max){
return false;
}
return isValidBST(node.left,min,node.val)&&isValidBST(node.right,node.val,max);
}
}