力扣(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;
}