完全二叉树:如果将一颗深度为K的二叉树按从上到下、从左到右的顺序进行编号,如果各结点的编号与深度为K的满二叉树相同位置的编号完全对应,那么这就是一颗完全二叉树。如图所示:
五、二叉树的主要性质
二叉树的性质是基于它的结构而得来的,这些性质不必死记,使用到再查询或者自己根据二叉树结构进行推理即可。
性质1:非空二叉树的叶子结点数等于双分支结点数加1。
证明:设二叉树的叶子结点数为X,单分支结点数为Y,双分支结点数为Z。则总结点数=X+Y+Z,总分支数=Y+2Z。
由于二叉树除了根结点外其他结点都有唯一的分支指向它,所以总分支数=总结点数-1.。
结合三个方程:总分支数=总结点数-1,即Y+2Z = X+Y+Z-1。化简得到X = Z + 1。即叶子结点数等于双分支结点数加1。
性质2:在二叉树的第i层上最多有2 i-1 个结点 (i>=1)。
证明:二叉树结点最多的情况即为满二叉树的情况,由于是满二叉树,每个结点都有两个孩子,所以下一层是上一层的2倍,构成了公比为2的等比数列,而第一层只有根结点,所以首项是1。所以二叉树的第i层上最多有2 i-1 个结点。
性质3:高度(或深度)为K的二叉树最多有2k - 1个节点(K>=1)。
证明:本性质其实就是性质2中描述的等比数列的前项和的问题。
性质4:若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:
(1) 若 i=1,则该结点是二叉树的根,无双亲, 否则,编号为 [i/2] 的结点为其双亲结点;
(2) 若 2i>n,则该结点无左孩子, 否则,编号为 2i 的结点为其左孩子结点;
(3) 若 2i+1>n,则该结点无右孩子结点, 否则,编号为2i+1 的结点为其右孩子结点。
性质5:具有n个节点的完全二叉树的深度为[log2n]+1或者[log2(n+1)],其中[log2n]+1是向下取整,[log2(n+1)]是向上取整。
性质6:Catalan函数性质:给定n个结点,能构成H(n)种结构不同的树。H(n) = c(2n,n) / (n+1)。
六、二叉树的存储结构为了方便说明,我们使用下图树1作为案例树。