验证二叉搜索树
- 递归+判断数组是否升序
javascript
var isValidBST = function(root) {
// 搜索二叉树中序遍历之后的结果数组一定是升序
if(!root){
return true;
}
let result = [];
var dg = function(node){
if(node){
dg(node.left);
result.push(node.val);
dg(node.right);
}
}
dg(root);
for(let i = 1; i < result.length; i++){
if(result[i-1] >= result[i]){
return false;
}
}
return true;
};
- 递归
javascript
var isValidBST = function(root) {
if(!root){
return true;
}
var dg = function(node,min,max){
// 遍历到叶子节点
if(!node){
return true;
}
// 判断左子树上所有节点的值是否均小于它的根节点的值,右子树上所有节点的值是否均大于它的根节点的值
if(node.val <= min || node.val >= max){
return false;
}
return dg(node.left,min,node.val) && dg(node.right,node.val,max);
}
return dg(root,-Infinity, Infinity);
};