首页 > 试题广场 >

判断二叉搜索树

[编程题]判断二叉搜索树
  • 热度指数:18899 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
判断给出的二叉树是否是一个二叉搜索树(BST)
二叉搜索的定义如下
  • 一个节点的左子树上节点的值都小于自身的节点值
  • 一个节点的右子树上的值都大于自身的节点值
  • 所有节点的左右子树都必须是二叉搜索树
如果你不清楚“{1,#,2,3}"的含义的话,请继续阅读
我们用如下方法将二叉树序列化:
二叉树的序列化遵循层序遍历的原则,”#“代表该位置是一条路径的终结,下面不再存在结点。
例如:
    1
   / \
  2   3
     /
    4
     \
      5
上述的二叉树序列化的结果是:"{1,2,3,#,#,4,#,#,5}".
示例1

输入

{1,1}

输出

false
示例2

输入

{0,#,1}

输出

true

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
头像 华科不平凡
发表于 2020-08-23 02:11:47
利用后序遍历,如果左右子树均为二叉搜索树,且根节点与左右子树根节点的大小符合二叉树要求,则为整个树是二叉搜索树: // // Created by jt on 2020/8/23. // using namespace std; class Solution { public: /** 展开全文
头像 O-Precedence
发表于 2021-09-09 16:06:30
左子树上界是root.val,下界是Integer.MIN_VALUE;右子树上界是Integer.MAX_VALU,下界是root.val; public class Solution { /** * * @param root TreeNode类 * @ 展开全文
头像 一叶浮尘
发表于 2020-04-11 11:56:30
判断给出的二叉树是否是一个二叉搜索树(BST)二叉搜索树的定义如下一个节点的左子树上节点的值都小于自身的节点值一个节点的右子树上节点的值都小于自身的节点值所有节点的左右子树都必须是二叉搜索树 我在之前的专栏中也写过,树的题目解决思路基本上等于:递归求解+使用栈数据结构+使用队列数据结构。优先考虑递 展开全文