1、二叉树
满足以下两个条件的树就是二叉树:
- 本身是有序树;
- 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2;
二叉树的性质
- 二叉树中,第 i 层最多有 2^( i-1)个结点。
- 如果二叉树的深度为 K,那么此二叉树最多有 2^K-1 个结点。
- 二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1。
二叉树还可以继续分类,衍生出满二叉树和完全二叉树。
2、满二叉树
如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。
3、完全二叉树
如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。
4、二叉查找树
(Binary Search Tree,BST),也称二叉搜索树或二叉排序树
是指一棵空树或者具有下列性质的二叉树:
若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
5、平衡二叉树
平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),得名于其发明者的名字( Adelson-Velskii 以及 Landis)
每个结点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定义为-1)
AVL树的单旋转双旋转