Java---判断一棵树是否为二叉查找树BST

Java—判断一棵树是否为二叉查找树BST

思路:对于一棵二叉树,最简单的方法就是中序遍历,看是不是一个递增数列,如果是,则是一棵二叉搜索树,如果不是,则不是二叉搜索树。在这里用一个lastVisit去记录上一次搜索的节点。这个过程就是先找到最左下角的节点,更新lastVisit为这个节点的值,然后按照中序遍历依次更新即可。

代码实现:

/**
 * @Author shall潇
 * @Date 2021/3/4
 * @Description 
 */
public class BinaryTree {
    private static int lastVisit = Integer.MIN_VALUE;
    public static boolean isBST(Node root){
        if(root==null)return true;              //空树也是BST

        boolean judgeleft = isBST(root.left);   //判断左子树是否是

        if(root.date >= lastVisit && judgeleft){ //当前节点比上次访问的节点的数大
            lastVisit = root.date;
        }else {
            return false;
        }
        boolean judegright = isBST(root.right);//判断右子树是否是
        return judegright;
    }

    class Node{		//创建树的数据结构
        int date;   //节点数据
        Node left;  //左节点
        Node right; //有节点
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43288259/article/details/114376008
今日推荐