题解 | #判断是不是二叉搜索树#
判断是不是二叉搜索树
http://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b
采用上一题(二叉搜索树与链表的思想)
定义pre指针,并定义中序递归函数,当pre.val>cur.val时则表明此时不符合,直接退出,但是我这里只能通过6/7的用例,不知道大佬们有没有什么办法修改一下
function isValidBST( root ) {
//由中序遍历得到是否满足要求 -- 这里可以采用迭代法15min---过了6/7的用例;或者非迭代法
let pre = null;
const inOrder = (cur)=>{
if(!cur) return true;
inOrder(cur.left);
if(!pre){
pre = cur;
}else{
if(pre.val > cur.val){
return false;
}else{
pre.right = cur;
}
}
cur.left = pre;
pre = cur;
return inOrder(cur.right);
}
return inOrder(root)
}