Validate Binary Search Tree
来源:互联网 发布:经济与社会统计数据库 编辑:程序博客网 时间:2024/05/04 18:38
public boolean isValidBST(TreeNode root) { // Start typing your Java solution below // DO NOT write main() function return isValidBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE); } public boolean isValidBST(TreeNode root, int min, int max) { if(root == null) return true; if(root.val >= max || root.val <= min) return false; return isValidBST(root.left, min, root.val) && isValidBST(root.right, root.val, max); } //it means when inorder traverse the tree, after element will always less than the before public boolean isValidBST(TreeNode root) { // Start typing your Java solution below // DO NOT write main() function if(root == null) return true; int min = Integer.MIN_VALUE; Stack<TreeNode> stack = new Stack<TreeNode>(); stack.push(root); while(!stack.empty()) { TreeNode tmp = stack.peek(); if(tmp.left != null) { stack.push(tmp.left); tmp.left = null; }else { tmp = stack.pop(); if(tmp.val > min) { min = tmp.val; }else { return false; } if(tmp.right != null) stack.push(tmp.right); } } return true; }