思路
方法1:中序遍历 + 序列校验
利用前置知识中所学习到的性质:对一棵 BST 做中序遍历,得到的序列一定是严格递增的。
所以我们只要中序遍历整棵树,得到它的中序序列,然后扫一遍判断有序性即可。
动画模拟
P4060.验证二叉搜索树
Leetcode 98.验证二叉搜索树-原题链接
题目内容
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效二叉搜索树定义如下:
- 节点的左子树只包含小于当前节点的数。
- 节点的右子树只包含 大于当前节点的数。
- 所有左子树和右子树自身必须也是二叉搜索树。
输入描述
一行包含二叉树的序列化数组,节点值之间用空格隔开,空节点用null表示。
输出描述
输入是是一个有效的二叉搜索树则输出true,否则输出false。
样例1

输入
2 1 3
输出
true
说明
样例2

输入
5 1 4 null null 3 6
输出
false
说明
根节点的值是5 ,但是右子节点的值是 4。
提示
- 树中节点数目范围在[1,104] 内
- −231<=Node.val<=231−1