您的位置:首页 > 其它

[leetcode]Validate Binary Search Tree

2013-08-16 18:05 453 查看
经过昨日训练,中序遍历基本会了。所以这个就比较顺利,对二分查找树来说,中序遍历就是递增的。所以遍历一下,遇到反例返回false即可。

public class Solution {
public boolean isValidBST(TreeNode root) {
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode n = root;
int last = Integer.MIN_VALUE;
while (n != null || !stack.empty()) {
if (n != null) {
stack.push(n);
n = n.left;
}
else {
n = stack.pop();
// visit n
if (n.val <= last) return false;
last = n.val;
n = n.right;
}
}
return true;
}
}


另外一种递归解法见此:http://www.cnblogs.com/remlostime/archive/2012/11/16/2772629.html

递归判断,递归时传入两个参数,一个是左界,一个是右界,节点的值必须在两个界的中间,同时在判断做子树和右子树时更新左右界。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: