标签:java search eterm put false 要求 sum treenode rmi
Assume a BST is defined as follows:
Example 1:
Input:
2
/ 1 3
Output: true
Example 2:
5 / 1 4 / 3 6 Output: false Explanation: The input is: [5,1,4,null,null,3,6]. The root node‘s value is 5 but its right child‘s value is 4.
题目大意:
查看这个树是否满足二叉搜索树的要求。
解法:
如果满足二叉搜索树,那么这个树的中序遍历一定是升序的,所以利用中序遍历查看序列是否是满足升序条件即可。
java:
class Solution {
public boolean isValidBST(TreeNode root) {
Stack<TreeNode>s=new Stack<TreeNode>();
TreeNode pre=null;
while(!s.empty()||root!=null){
while(root!=null){
s.push(root);
root=root.left;
}
root=s.pop();
if(pre!=null && pre.val >= root.val) return false;
pre=root;
root=root.right;
}
return true;
}
}
还有一种解法,就是递归的判断左右子树是否在给定数值范围内。
java:
class Solution {
public boolean isVaildBSTCore(TreeNode root,long minVal,long maxVal){
if(root==null) return true;
if(minVal>=root.val || maxVal<=root.val) return false;
return isVaildBSTCore(root.left,minVal,root.val)&&isVaildBSTCore(root.right,root.val,maxVal);
}
public boolean isValidBST(TreeNode root) {
if(root==null) return true;
return isVaildBSTCore(root,Long.MIN_VALUE,Long.MAX_VALUE);
}
}
leetcode [98]Validate Binary Search Tree
标签:java search eterm put false 要求 sum treenode rmi
原文地址:https://www.cnblogs.com/xiaobaituyun/p/10690072.html