判断一棵树是否是二叉查找树
利用该节点对应的最大值和最小值来判断该节点是否符合二叉查找树的性质。
public boolean isValidBST(TreeNode root) {
return validateRange(root, Long.MIN_VALUE, Long.MAX_VALUE);
}
private boolean validateRange(TreeNode root, long min, long max) {
if (root == null) return true;
if (root.val <=min || root.val >= max)) return false;
return validateRange(root.left, min, (long) root.val)
&& validateRange(root.right, (long) root.val, max);
}
利用二叉树中序遍历的性质:当前遍历的节点值比上次遍历的节点值大。
public static boolean judgeBST(TreeNode root,int pre){
if(root==null)return true;
boolean left=judgeBST(root.left,pre);
if(!left)return false;
if(root.val<=pre)return false;
pre=root.val;
boolean right=judgeBST(root.right,pre);
if(!right)return false;
return true;
}