您的位置:首页 > 其它

判断一棵树是否是二叉查找树

2016-03-30 18:55 381 查看
判断一棵树是否是二叉查找树

利用该节点对应的最大值和最小值来判断该节点是否符合二叉查找树的性质。

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  判断二叉查找树