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