二叉树
每个节点最多有两个子节点的树。
满二叉树
除了叶子节点,所有节点的度都是2.
完全二叉树
只有最下面两层的节点,度可以小于2的二叉树。
二叉查找树(二叉搜索树)
左子树小于根,右子树大于根。
中序遍历是递增序列。
/*
* (递归实现)查找"二叉树x"中键值为key的节点
*/
private BSTNode<T> search (BSTNode < T > x, T key){
if (x == null)
return x;
int cmp = key.compareTo(x.key);
if (cmp < 0)
return search(x.left, key);
else if (cmp > 0)
return search(x.right, key);
else
return x;
}
public BSTNode<T> search (T key){
return search(mRoot, key);
}
/*
* (非递归实现)查找"二叉树x"中键值为key的节点
*/
private BSTNode<T> iterativeSearch(BSTNode<T> x, T key) {
while (x!=null) {
int cmp = key.compareTo(x.key);
if (cmp < 0)
x = x.left;
else if (cmp > 0)
x = x.right;
else
return x;
}
return x;
}
public BSTNode<T> iterativeSearch(T key) {
return iterativeSearch(mRoot, key);
}
AVL树(平衡二叉树)
AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。
红黑树(特殊的二叉查找树)
哈夫曼树
带权路径长度最小。
B树
多路平衡n叉树。