目录
1. 什么是二叉树
满足以下两个条件的树称之为二叉树:
1. 本质上为有序树;
2. 每个结点的度不能超过2,即结点的度仅能为0,1,2。
2. 二叉树的性质
性质1:二叉树第i层的结点数最多为2^(i-1) (i>=1)。
性质2:深度为k的二叉树最多有2^k - 1个结点。
性质3:在任意一颗二叉树中,若终端结点(叶子结点)的个数为n0,度为2的结点树为n2,则n0=n2+1。
证明:设二叉树中度为1的结点数为n1,结点总数为n,则n = n0 + n1 +n2。同时,度为2的子结点共有2*n2个,度为1的子结点共有n1个,总结点数=子结点数+根结点 故n = n2*2 + n1 +1。两等式联立得出n0 = n2 +1。
3. 二叉树的分类:
3.1. 满二叉树:
若二叉树中除了叶子结点,每一个节点的度都为2,则称此二叉树为满二叉树。
满二叉树具有以下性质:
1. 满二叉树的第i层结点数为2^(i-1);
2. 深度为k的满二叉树有2^k - 1个结点,叶子结点有2^(k-1)个;
3. 具有n个结点的满二叉树的深度为log2(n+1);
4. 满二叉树中不存在度为1的结点,叶子结点仅存在在最底层。
3.2. 完全二叉树
若二叉树除了最后一层结点满足满二叉树的定义,且最后一层节点满足从左到右分布的次序,则该二叉树被称为完全二叉树。
完全二叉树除了满足普通二叉树的性质外,还满足以下性质:
1. n个结点的完全二叉树的深度为⌊log2n⌋+1;
2. 将完全二叉树按照层次从左到右编号,
(1)当i > 1时,序号为i的结点的父结点为结点[i / 2];
(2)若2*i > n, 则序号为i的结点无左子女结点,否则该节点的左子女结点序号为2*i;
(3)若2*i+1>n,则序号为i的结点无右子女结点,否则该结点的右子女结点的序号为2*i+1。
4. 二叉树的存储方式
二叉树的存储方式有两种,顺序存储和链式存储。
4.1 顺序存储
顺序存储只适用于完全二叉树,若想存储普通二叉树,需要先将其转化为完全二叉树。满二叉树也是一种特殊的完全二叉树。
普通二叉树转化成完全二叉树的方法如下