写点什么

LeetCode 题解:98. 验证二叉搜索树,递归中序遍历过程中判断,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2020 年 10 月 22 日
LeetCode题解:98. 验证二叉搜索树,递归中序遍历过程中判断,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/validate-binary-search-tree/



解题思路:



  1. 参考官方题解中的中序遍历动画,可知中序遍历的顺序为从左到右。

  2. 也就是说,可以使用递归中序遍历,在输出结果过程中,判断相邻两个节点是否递增即可。

  3. 中序遍历的方法可以参考我的题解LeetCode题解:94. 二叉树的中序遍历,递归,JavaScript,详细注释



/**
* @param {TreeNode} root
* @return {boolean}
*/
var isValidBST = function (root) {
let prev = -Infinity; // 保存上一个节点的值
// 中序遍历二叉树
function traversal(node) {
if (node) {
// 缓存遍历左子节点的结果
const leftResult = traversal(node.left);
// 如果当前节点的值比上一个节点的值小,即为非二叉搜索树
if (prev >= node.val) {
return false;
}
// 当前节点即为下一次递归上一个节点
prev = node.val;
// 缓存遍历右子节点的结果
const rightResult = traversal(node.right);
// 左右子树必须都满足条件,采薇二叉搜索树
return leftResult && rightResult;
}
// 如果当前节点为空,则默认返回true
return true;
}
return traversal(root);
};



发布于: 2020 年 10 月 22 日阅读数: 29
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:98. 验证二叉搜索树,递归中序遍历过程中判断,JavaScript,详细注释