leetcode在力扣 App 中打开
调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

实现一个函数,检查一棵二叉树是否为二叉搜索树。

示例 1:
输入:
    2
   / \
  1   3
输出:true
示例 2:
输入:
    5
   / \
  1   4
     / \
    3   6
输出:false
解释:输入为: [5,1,4,null,null,3,6]。
     根节点的值为 5 ,但是其右子节点值为 4 。
通过次数
44.6K
提交次数
123.7K
通过率
36.1%


相关企业

提示 1
如果使用前序遍历来遍历树,元素的顺序是正确的,这是否表明树实际上是有序的?有重复元素会发生什么?如果允许重复元素,它们必须位于特定的一边(通常是左边)。

提示 2
作为一个二叉搜索树,并不是说每个节点都满足left.value <= current.value < right就够了。左边的每个节点必须小于当前节点,该节点还必须小于右边的所有节点。

提示 3
如果左边的每个节点必须小于或等于当前节点,那么这就等于左边最大的节点必须小于或等于当前节点。

提示 4
相比于根据leftTree.max和rightTree.min来验证当前节点的值,我们可以翻转逻辑吗?验证左子树的节点以确保其小于current.value。

提示 5
把checkBST函数当作一个递归函数,保证每个节点在允许范围内(最小, 最大)。首先,这个范围是无限的。当我们遍历左边,最小的是负无穷大,最大的是root.value。你能实现这个递归函数,并且随着遍历而适当调整这些范围吗?

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
root =
[2,1,3]
2
1
3
Source