5.1 二叉树
5.1.1二叉树的定义
二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的‘互不相交的二叉树组成。
特点:每个结点至多有两棵子树,子树有左右之分,其次序不能任意颠倒。
特殊的二叉树
(1)满二叉树
二叉树中每一层的结点数都达到最大,所有叶子结点均在最后一层。
(2)完全二叉树
除最后一层外,其余各层均满。
最后一层或是满的,或者右边缺少连续的若干结点。即叶子结点只能出现在最后一层或者次上一层。
(3)理想平衡树
在一棵二叉树中,除最后一层外,其余层都是满的,称为理想平衡树;满二叉树和完全二叉树都是理想平衡树,但理想平衡树不一定是完全二叉树。
5.1.2二叉树的性质
1.在二叉树的第i层上,至多有2i-1个结点(i>=1)。
推广:m叉树的第i层上至多有mi-1个结点。
2.一个深度为k的二叉树中,至多有ki-1个结点。
推广:深度为k的m叉树中,至多有(mk-1)/(m-1)个结点。
3.对于一个非空二叉树,如果叶子结点数为n0,度数为2的结点数为n2,则有n0 = n2+1。
4.具有n个结点的完全二叉树的深度k为(log2n)+1。(k为整数,表示不大于log2n的整数)
推广:具有n个结点的m叉树的最小深度是log2(n(m-1)+1)。
5.如果对一颗有n个节点的完全二叉树的结点按层序编号(从上到下,从左到右),则对任一结点i(1<=i<=n)有:
(1)如果i=1,i为根。若i>1则其双亲是结点(i/2)取整。
(2)如果2i>n,则结点i为叶子,否则其左孩子是结点2i。
(3)如果2i+1>n,则结点i无右孩子,否则其右孩子是结点2i+1。
5.1.3二叉树的存储结构
1.顺序存储
顺序存储就是用一组连续的存储单元存放二叉树中的结点。通常是按照从上到下,从左到右的