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