如何验证二叉搜索树(BST):Java实现详解
文章目录
- 题目描述
- 方法一:递归检查上下界
- 核心思想
- 代码实现
- 关键点
- 方法二:中序遍历迭代法
- 核心思想
- 代码实现
- 关键点
- 方法三:中序遍历递归法(实例变量追踪前驱)
- 核心思想
- 代码实现
- 关键点
- 方法对比与选择建议
- 注意事项
- 总结
二叉搜索树(Binary Search Tree, BST)是一种常见的数据结构,其核心特性是:
- 左子树的所有节点值均小于当前节点的值。
- 右子树的所有节点值均大于当前节点的值。
- 左右子树自身也必须是二叉搜索树。
验证一棵二叉树是否为BST看似简单,但需注意严格的大小关系和边界问题。本文将介绍三种Java实现方法,并分析其适用场景。
题目描述
98. 验证二叉搜索树
方法一:递归检查上下界
核心思想
每个节点的值必须在特定范围内:
- 初始根节点的范围为
(Long.MIN_VALUE, Long.MAX_VALUE)
。 - 左子节点的范围更新为
(父节点的下界, 父节点的值)
。 - 右子节点的范围更新为
(父节点的值, 父节点的上界)
。
代码实现
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val = val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}class Solution {public boolean isValidBST(TreeNode