BST(二叉搜索树)相关

 

1.BST的合法性:validate-binary-search-tree

  class TreeNode {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode(int x) { val = x; }
  }
 
public class Solution {
    //方法1:每个结点都对应一个上限,一个下限。
    public boolean isValidBST(TreeNode root) {
        return isValidRoot(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
    }
    
    public boolean isValidRoot(TreeNode root,int lower,int upper) {
        if(root==null)
            return true;
        if(root.val<=lower || root.val>=upper)
            return false;
        return isValidRoot(root.left, lower, root.val)
                && isValidRoot(root.right, root.val, upper);    
    }
}

/* 
    //方法2:中序遍历,记录前一个结点,与当前结点的值比较。
    public boolean isValidBST(TreeNode root) {
        inorderTraversal(root);
        return isValidBST;
    }
    
    TreeNode pre;
    boolean isValidBST=true;
    public void inorderTraversal(TreeNode root) {
        if(root!=null) {
            inorderTraversal(root.left);
            if(pre!=null && pre.val>=root.val)
                isValidBST=false;
            pre=root;
            inorderTraversal(root.right);
        }
    }
}
*/

 

 

2.复原二叉树:recover-binary-search-tree

 

posted @ 2018-03-11 11:21  midiyu  阅读(149)  评论(0编辑  收藏  举报