力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入: root = [2,1,3] 输出: true

示例 2:

输入: root = [5,1,4,null,null,3,6] 输出: false 解释: 根节点的值是 5 ,但是右子节点的值是 4 。

重点:搜索二叉树性质 中序遍历单调递增

private long min = Long.MIN_VALUE;  
public boolean isValidBST(TreeNode root) {  
//二叉搜索树的中序遍历是递增的  
//递归  
return dfs(root);  
}  
  
private boolean dfs(TreeNode root) {  
//如果节点为空  
if(root==null) return true;  
//递归左节点  
if(!dfs(root.left)) return false;  
//如果节点值小于等于最小值 判断单调递增  
if(root.val<=min) return false;  
//更新最小值  
min = root.val;  
//递归右节点  
if(!dfs(root.right)) return false;  
return true;  
  
}