什么是二叉搜索树
二叉搜索树,是具有如下性质的二叉树:
- 每一个节点是一个对象,包含属性key、left、right、p,分别表示节点的值、左孩子、右孩子、父亲。
class Node {
int key;
Node left;
Node right;
Node p;
}
- 对于每一个节点x,其左子树关键字最大值不超过x.key,其右子树关键字值不低于x.key:
顺序输出二叉搜索树
通过中序遍历一颗二叉搜索树,我们可以按序输出二叉搜索树的所有关键字:
public void InorderTreeWalk(Node root){
InorderTreeWalk(root.left);
System.out.print(root.key);
InorderTreeWalk(root.right);
}
中序遍历指的是输出的根节点的关键字位于左右孩子节点关键字之间,类似地,先序遍历根节点关键字在左右孩子节点关键字之前,后序遍历根节点关键字在左右孩子节点关键字之后
二叉搜索树的查找
给定一个节点和一个key值,查找在以该节点为根的子树下是否存在节点值与key相等的节点,若存在,返回该节点的引用,否则返回null:
public Node search(Node node, int key){
while(node != null && node.key != key){
if(key < node.key)
node = node.left;