一、二叉树介绍
二叉查找树(Binary Search Tree,BST),又称二叉排序树,也称二叉搜索树,它或者是一颗空树,或者具有如下性质的树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。它的左右子树也分别为二叉查找树。
结论:中序遍历一颗二叉查找树可以得到一个按关键字递增的有序序列。简单来说,比根小的往左边放 比根大的往右边放。
二、代码实现
1、BST结点类:
1 public class BSTNode<K, V> { 2 public K key; 3 public V value; 4 public BSTNode<K, V> left; 5 public BSTNode<K, V> right; 6 public BSTNode<K, V> parent; 7 public boolean isLeftChild; 8 public int height; 9 public int num; 10 public boolean isRed = true; // 后面才学习的红黑树 11 12 public BSTNode() { 13 } 14 15 public BSTNode(K key, V value, BSTNode<K, V> left, BSTNode<K, V> right, BSTNode<K, V> parent) { 16 super(); 17 this.key = key; 18 this.value = value; 19 this.left = left; 20 this.right = right; 21 this.parent = parent; 22 } 23 24 public boolean isLeft() { 25 return isLeftChild; 26 } 27 28 public boolean isRight() { 29 return !isLeftChild; 30 } 31 32 @Override 33 public String toString() { 34 return (isRed ? "红色" : "黑色") + " [" + key + "]<-" + (parent == null ? "" : parent.key); 35 } 36 }