public class Solution { public boolean isValidBST(TreeNode root) { Stack<TreeNode> stack=new Stack<TreeNode>(); TreeNode cur=null; while(root!=null||!stack.isEmpty()) { while(root!=null) { stack.push(root); root=root.left; } root=stack.pop(); if(cur!=null&&cur.val>=root.val) return false; cur=root; root=root.right; } return true; } }
class Solution { public boolean isValidBST(TreeNode root) { TreeNode cur=root, pre=null, p=null; while(cur!=null) { if(cur.left!=null) { p=cur.left; while(p.right!=null&&p.right!=cur) p=p.right; if(p.right==null) { p.right=cur; cur=cur.left; } else { if(pre!=null&&cur!=null&&pre.val>=cur.val) return false; pre=cur; p.right=null; cur=cur.right; } } else { if(pre!=null&&cur!=null&&pre.val>=cur.val) return false; pre=cur; cur=cur.right; } } return true; } }