实现一个函数,检查一棵二叉树是否为二叉搜索树。力扣原文
示例 1:
输入:
2
/ \
1 3
输出: true
示例 2:
输入:
5
/ \
1 4
/ \
3 6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。
根节点的值为 5 ,但是其右子节点值为 4 。
解题
递归:
function isValidBST(root, lower = -Infinity, upper = Infinity) {
if (!root) return true
return root.val > lower &&
root.val < upper &&
isValidBST(root.left, lower, root.val) &&
isValidBST(root.right, root.val, upper)
}
中序遍历:
function isValidBST(root) {
let pre=-Infinity
let stack=[]
while(stack.length>0||root){
while(root){
stack.push(root)
root=root.left
}
root=stack.pop()
if(root.val<=pre)return false
pre=root.val
root=root.right
}
return true
}