
本文共 1887 字,大约阅读时间需要 6 分钟。
二叉树
1.二叉树的定义
\quad \quad 二叉树是n(n>=0)个结点的优先集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
2.二叉树的特点
- 每个结点最多有两棵子树;所以二叉树中不存在度大于2的结点
- 二叉树是有序的,其次序不能颠倒。左子树与右子树都是有顺序的,次序不能任意颠倒;
- 即使树中某结点只有一颗子树,也要区分它是左子树还是右子树。
3.二叉树的基本形态
1.空二叉树
2.只有一个根结点 3.根结点只有左子树 4.根结点只有右子树 5.根结点既有左子树又有右子树
4.特殊的二叉树
4.1 斜树
- 所有结点都只有左子树的二叉树称为左斜树
- 所有结点都只有右子树的二叉树称为右斜树
斜树的特点:
1.在斜树中,每一层只有一个结点; 2.斜树的结点个数与其深度相同。4.2 满二叉树
\quad \quad 在一棵二叉树中,如果所有分支结点都存在左子树与右子树,并且所有叶子都在同一层上。则此二叉树为满二叉树 满二叉树的特点:
1.叶子结点只能出现在最下一层。
2.只有度为0和度为2的结点。 3.满二叉树在同样深度的二叉树中结点个数最多 4.满二叉树在同样深度的二叉树中叶子结点个数最多4.3 完全二叉树
\quad \quad 对一棵具有n个结点的二叉树按层序编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同。则此二叉树为完全二叉树。 完全二叉树的特点:
1.叶子结点只能出现在最下两层且最下层的叶子结点都集中在二叉树的左面。
2.完全二叉树中如果有度为1的结点,且可能有一个,且该结点只有左孩子。 3.深度为K的完全二叉树在K-1层上一定是完全二叉树。 4.在同样结点个数的二叉树中,完全二叉树的深度最小。5.二叉树的基本性质
性质1
\quad \quad 二叉树的第i层上最多有 2 ( i − 1 ) 2^{(i-1)} 2(i−1)个结点。
性质2
\quad \quad 一棵深度为k的二叉树中,最多有 2 k − 1 2^k-1 2k−1个结点,最少有k个结点。
\quad \quad 深度为K且具有 2 k − 1 2^k-1 2k−1个结点的二叉树一定是满二叉树。
\quad \quad 深度为K且具有k个结点的二叉树不一定是斜树。
性质3
\quad \quad 在一棵二叉树中,如果叶子结点树为 n 0 n_0 n0,度为2的结点数为 n 2 n_2 n2,则有: n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1
性质4
\quad \quad 具有n个结点的 完全二叉树 的深度为 l o g 2 n log_2n log2n+1。
性质5
6.二叉树的存储结构
6.1 二叉树的顺序存储结构
\quad \quad 二叉树的顺序存储结构就是用一维数组存储存储二叉树中的结点,并且结点的存储位置 (下标)应能体现结点之间的逻辑关系——父子关系
完全二叉树的顺序存储

一般二叉树的顺序存储
\quad \quad 深度为K的右斜树,K个结点需分配 2 k − 1 2^k-1 2k−1个存储单元,极度浪费空间。
\quad \quad 一棵二叉树改造成完全二叉树形态,需增加很多空结点,造成存储空间的浪费。
因此,二叉树的顺序存储结构一般仅存储完全二叉树。
6.2 二叉树的链式存储结构
\quad \quad 二叉树的链式存储结构,即二叉链表
基本思想
\quad \quad 令二叉树的每个结点对应一个链表结点,链表结点除了存放与二叉树有关的数据信息之外,还要设置指示左右孩子的指针。
结点结构:

三叉链表:
\quad \quad 在二叉链表的基础上增加一个指向双亲的指针域。


三叉链表的静态链表形式
优点:
- 节省存储空间
- 搜索结点时,比较方便
缺点:
- 不适合用于频繁插入和删除的场合
发表评论
最新留言
关于作者
