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

Posted midiyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BST的合法性:validate-binary-search-tree相关的知识,希望对你有一定的参考价值。

/**
 * Definition for binary tree
 * public 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);
        }
    }
}
*/

 

以上是关于BST的合法性:validate-binary-search-tree的主要内容,如果未能解决你的问题,请参考以下文章

BST | 二叉搜索树的基本操作(Java)

二叉树搜索子树的最大键值和

算法——dfs 判断是否为BST

二叉树类问题框架

CF D. Recovering BST (区间DP)

LeetCode98. Validate Binary Search Tree -判断是否为二叉排序树