182

问答题 182 /393

请你说一下BST的特点,并手写代码判断一棵树是不是BST

参考答案

参考回答:

BST(二叉排序树):

1、每个结点都有一个作为搜索依据的关键码,所有结点的关键码不同

2、左子树上所有结点的关键码小于根节点的关键码

3、右子树所有结点的关键码大于根节点的关键码

4、左子树和右子树也是BST

判断一棵树是不是BST

class Node {
int data;
Node left;
Node right;
}
public class BSTChecker {
private static int lastVisit = Integer.MIN_VALUE;
public static boolean isBST(Node root) {
if(root == null) return true;


boolean judgeLeft = isBST(root.left); // 先判断左子树


if(root.data >= lastVisit && judgeLeft) { // 当前节点比上次访问的数值要大

lastVisit = root.data;
} else {
return false;
}


boolean judgeRight = isBST(root.right); // 后判断右子树


return judgeRight;
}
}