标签: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