98. 验证二叉搜索树
一、思想
一个二叉搜索树的中序遍历是一个递增序列,所以只需要中序遍历这个二叉树,然后判断这个序列是否是递增序列即可。
注意:
1、二叉搜索树的定义是左子树所有节点小于中间节点,右子树所有节点大于中间节点。所以不能单纯的比较左节点小于中间节点,右节点大于中间节点就完事了。
二、代码实现
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {boolean}
*/
var isValidBST = function(root) {
// 用来存储最后的序列
let res = [];
// 中序遍历二叉树
var midleTree = function(root){
// 递归结束条件
if(!root) return;
midleTree(root.left);
res.push(root.val);
midleTree(root.right)
};
// 调用中序遍历,得到最后的序列
midleTree(root);
// 判断res序列是否递增,z注意相等的也是false
for(let i=0; i<res.length-1; i++){
if(res[i] >= res[i+1]) return false;
}
return true;
};