题目
实现一个函数,检查一棵二叉树是否为二叉搜索树。
代码
中序遍历
TreeNode pre = null;
public boolean isValidBST(TreeNode root) {
if (root == null) return true;
if (!isValidBST(root.left)) return false;
if (pre != null && root.val <= pre.val) return false;
pre = root;
if (!isValidBST(root.right)) return false;
return true;
} 根据二叉搜索树特点判断
public boolean isValidBST(TreeNode root) {
return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
}
private boolean isValidBST(TreeNode node, long min, long max) {
if (node == null) {
return true;
}
return min < node.val && node.val < max && isValidBST(node.left, min, node.val) && isValidBST(node.right, node.val, max);
} 
京公网安备 11010502036488号