- 3
- 0
- 约2.32千字
- 约 15页
- 2018-05-19 发布于四川
- 举报
5.3.1 二叉树的链式存储结构 所谓链式存储方式,是指二叉树的各结点随机的存储在 内存空间中,结点之间的关系用指针表示。 二叉树的链表的结点包含三个域:数据域和左、右指针域。用info域存储结点的数据元素,另外再设置两个指针域left和right,分别指向结点的左子结点和右子结点 当结点的某个子结点为空时,相应的指针为空指针。其结点结构如图5.7(a)所示。有时候为了便于查找二叉树中某个结点的父结点,还可以在结点结构中加入一个指向其父结点的指针域,如图5.7(b)所示 5.3.1 二叉树的链式存储结构 利用这两种结点结构所得到的二叉树的存储结构分别称为二叉链表(也称“left-right存储法”)和三叉链表 在使用二叉链表存储的二叉树中,如果找某个结点的父结点,那么需要从根结点出发依次巡查 在三叉链表表示的二叉树中只需要顺着parent指针就能直接找到该结点的父结点 二叉链存储结构的二叉树 二叉树的顺序存储结构 二叉树的顺序存储是指按照一定次序,用一组地址连续的存储单元存储二叉树上的各个结点元素。 完全二叉树的顺序表示法: 对于一棵具有n个结点的完全二叉树,可以从根结点起自上而下,从左至右地把所有的结点编号,得到一个足以反映整个二叉树结构的线性序列。线性序列里存储的结点就是按照层次周游二叉树得到的排列。 数据结构与算法 For 软件学院10级本科生 2011秋 5 二叉树 5.1 二叉树的概念 5.2 二叉树的周游 5.3 二叉树的存储结构 5.4 二叉搜索树 5.5 堆与优先队列 5.6 Huffman树及其应用 5.7 二叉树知识点总结 主要内容 5.3 二叉树的存储结构 二叉树的存储结构: 链式存储结构 顺序存储结构 图5.7 二叉树结点的存储结构 图 二叉链存储结构的二叉树 root ∧ A ∧ B C ∧ D ∧ E ∧ F ∧ G ∧ ∧ ∧ root A ∧ B C ∧ D ∧ E ∧ F ∧ G ∧ ∧ ∧ (a)不带头结点的二叉树 (b)带头结点的二叉树 二叉链存储结构的二叉树 A B C D E F G A B C D E F G ^ ^ ^ ^ ^ ^ ^ ^ 在n个结点的二叉链表中,有n+1个空指针域。 三叉链存储结构的二叉树 A B C D E F G ^ ^ ^ ^ ^ ^ ^ ^ ^ A B C D E F G 复习:完全二叉树的主要性质7 性质7. 对于具有n个结点的完全二叉树,结点按层次由左到右编号,则对任一结点i(0 ≤ i ≤ n - 1)有 (1)如果i = 0,则结点i是二叉树的根结点;若i>0,则其父结点编号是[(i - 1)/2]。 (2)当2i + 1 ≤ n - 1时,结点i的左子结点是2i + 1,否则结点i没有左子结点。 当2i + 2 ≤ n - 1时,结点i的右子结点是2i + 2,否则结点i没有右子结点。 (3)当i为偶数且0 i n时,结点i的左兄弟是结点i - 1,否则结点i没有左兄弟。 当i为奇数且i+1 n时,结点i的右兄弟是结点i + 1,否则结点i没有右兄弟。 B A C E D F G H I J K L M N O B A C E D F G H I J A B C D O N M L K J I H G F E 1 2 0 4 3 5 7 6 11 8 10 9 12 13 14 A B C D J I H G F E 1 2 0 4 3 5 7 6 8 9 完全二叉树的结点可按从上至下和从左至右的次序存储在一维数组中,其结点之间的关系可由公式计算得到。 顺序存储结构 对于一般的非完全二叉树显然不能直接使用二叉树的顺序存储结构。可以首先在非完全二叉树中增添一些并不存在的空结点使之变成完全二叉树的形态,然后再用顺序存储结构存储。 B A C D E G F B A C D E G F (a)一般二叉树 (b)完全二叉树形态 (c) 在数组中的存储形式 A B C ∧ G ∧ ∧ F ∧ ∧ ∧ E D 1 2 0 4 3 5 7 6 11 8 10 9 12 数组 下标 高度为4,有7个结点的一般二叉树的顺序存储 a b c d e f g g f 0 0 0 0 e d c b a 1 2 3 4 5 6
原创力文档

文档评论(0)