题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
代码实现
递归实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution { public boolean isValidBST(TreeNode root) { return isValidBST(root, null, null); }
public boolean isValidBST(TreeNode root, TreeNode min, TreeNode max) { if (root == null) { return Boolean.TRUE; } if (min != null && root.val <= min.val) { return Boolean.FALSE; } if (max != null && root.val >= max.val) { return Boolean.FALSE; } return isValidBST(root.left, min, root) && isValidBST(root.right, root, max); } }
|