leetcode_Validate Binary Search Tree
2015-04-04 20:39
381 查看
描述:
Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node's key.
The right subtree of a node contains only nodes with keys greater than the node's key.
Both the left and right subtrees must also be binary search trees.
confused what
"{1,#,2,3}"means? >
read more on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5
The above binary tree is serialized as
"{1,2,3,#,#,4,#,#,5}".
思路:
由于二叉排序树的中序遍历序列是有序的,所以考虑在遍历的过程中通过判断遍历序列是否有序从而来判断该排序树是否有效,但这又涉及到第一个元素的问题,所以可以设一个比Integer.MAX_INT还小的值作为参考值或者设一个flag来判断是否是第一个值,第一个值直接跳过即可。代码:
public boolean isValidBST(TreeNode root) {if(root==null)
return true;
Stack<TreeNode>st=new Stack<TreeNode>();
st.push(root);
TreeNode top=null;
double temp=-2147483649.0;
while(!st.empty())
{
top=st.peek();
while(top.left!=null)
{
st.push(top.left);
top=top.left;
}
while(top.right==null)
{
if(temp<top.val)
temp=top.val;
else
return false;
st.pop();
if(!st.empty())
top=st.peek();
else
break;
}
if(!st.empty())
{
if(temp<top.val)
temp=top.val;
else
return false;
st.pop();
st.push(top.right);
}
}
return true;
}
结果:
相关文章推荐
- [LeetCode] 129: Validate Binary Search Tree
- [LeetCode]Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- leetcode--Validate Binary Search Tree
- LeetCode -- Validate Binary Search Tree
- LeetCode - Validate Binary Search Tree
- 个人记录-LeetCode 98. Validate Binary Search Tree
- [算法分析与设计] leetcode 每周一题: Validate Binary Search Tree
- [面试真题] LeetCode:Validate Binary Search Tree
- 《leetCode》:Validate Binary Search Tree
- LeetCode98—Validate Binary Search Tree
- [LeetCode]98.Validate Binary Search Tree
- [Leetcode] Validate binary search tree 验证二叉搜索树
- leetcode — validate-binary-search-tree
- LeetCode 98. Validate Binary Search Tree
- [leetcode]Validate Binary Search Tree
- [LeetCode]98 Validate Binary Search Tree
- [LeetCode] Validate Binary Search Tree
- leetcode: 98. Validate Binary Search Tree
- [leetcode]Validate Binary Search Tree