98. Validate Binary Search Tree

来源:互联网 发布:什么是绿色版软件 编辑:程序博客网 时间:2024/04/25 17:14

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.
Solution 1 Recursive
//还有一种方法是利用中序遍历得到数组,然后判断数组是不是递增的就行。用到n的空间。duplicates not working//Avoid [Integer.MIN_VALUE]public boolean isValidBST(TreeNode root) {        return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);    }    public boolean isValidBST(TreeNode root, long min, long 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);    }

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



0 0
原创粉丝点击