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