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; //有节点
}
}