98. 验证二叉搜索树
分析
- 二叉搜索树的性质
- 对于任意节点,其左子树所有节点值均小于该节点值,右子树所有节点值均大于该节点值
- 递归验证子树
- 每次检查当前节点是否满足范围条件
[l, r]
- 如果当前节点值小于等于
l
或大于等于r
,直接返回false
- 如果当前节点值小于等于
- 对左子树递归验证,更新上界为当前节点值
- 对右子树递归验证,更新下界为当前节点值
- 每次检查当前节点是否满足范围条件
- 递归终止条件
- 当节点为
nullptr
时,返回true
,表示空子树有效
- 当节点为
时间复杂度
每个节点只访问一次,时间复杂度为 O(n)
,其中 n
为节点数
空间复杂度
递归深度由树的高度决定,空间复杂度为 O(h)
,其中 h
为树的高度
- 最坏情况:链式结构,
O(n)
- 最好情况:平衡二叉树,
O(logn)
C++代码
|
|