不管全世界所有人怎么说,我都认为自己的感受才是正确的。无论别人怎么看,我绝不打乱自己的节奏。喜欢的事自然可以坚持,不喜欢的怎么也长久不了。
LeetCode:原题地址
题目要求
实现一个函数,检查一棵二叉树是否为二叉搜索树。
示例 1:
输入:
2
/ \
1 3
输出: true
示例 2:
输入:
5
/ \
1 4
/ \
3 6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
思路
- 中序遍历二叉搜索树,得到的是一个严格递增的序列
- 若进行中序遍历,当前值小于等于上一个值,不递增,肯定不是二叉搜索树
代码
const isValidBST = root => {
let preVal = -Infinity;
const inOrder = root => {
if (!root) return true;
const L = inOrder(root.left);
// 当前值小于等于上一个值,不递增,肯定不是二叉搜索树
if (root.val <= preVal) return false;
preVal = root.val;
const R = inOrder(root.right);
// 左右子树都要是二叉搜索树
return L && R;
};
return inOrder(root);
};