验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入:
输出: true
示例 2:
输入:
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 public boolean isValidBST(TreeNode root){ 12 return isValidBST(root,Long.MIN_VALUE,Long.MAX_VALUE); 13 } 14 15 public boolean isValidBST(TreeNode root,long minVal,long maxVal){ 16 if(root==null) return true; 17 if(root.val>=maxVal|| root.val<=minVal) return false; 18 return isValidBST(root.left,minVal,root.val) && isValidBST(root.right,root.val,maxVal); 19 } 20 }