1 / 27

已知有 ABCD 构成的电文为 ABDDCBD ,请设计一个二进制编码方案使得总长度最短。

7. 字符. 权值. 01 编码. 0. 1. 4. D. 0. 1. B. 2. 0. 1. C. A. 已知有 ABCD 构成的电文为 ABDDCBD ,请设计一个二进制编码方案使得总长度最短。. A. 1. 111. B. 2. 10. C. 1. 110. D. 3. 0. 数据结构 主讲:王蕾. 课程内容. 1. 绪论. 2. 线性表. 3. 栈和队列. 4. 串. 5. 数组和广义表. 6. 二叉树. 7. 树和森林. 8. 图. 9. 查找. 树的定义.

Download Presentation

已知有 ABCD 构成的电文为 ABDDCBD ,请设计一个二进制编码方案使得总长度最短。

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 7 字符 权值 01编码 0 1 4 D 0 1 B 2 0 1 C A • 已知有ABCD构成的电文为ABDDCBD,请设计一个二进制编码方案使得总长度最短。 A 1 111 B 2 10 C 1 110 D 3 0

  2. 数据结构 主讲:王蕾

  3. 课程内容 1.绪论 2.线性表 3.栈和队列 4.串 5.数组和广义表 6.二叉树 7.树和森林 8.图 9.查找

  4. 树的定义 • 树(Tree)是n(n≥0)个有限数据元素的集合。当n=0时,称这棵树为空树。 • 在一棵非空树T中: • 有一个特殊的数据元素称为树的根结点,根结点没有前驱结点。 • 若n>1,除根结点之外的其余数据元素被分成m(m>0)个互不相交的集合T1,T2,…,Tm,其中每一个集合Ti(1≤i≤m)本身又是一棵树。树T1,T2,…,Tm称为这个根结点的子树。

  5. 树具有下面两个特点: • 树的根结点没有前驱结点,除根结点之外的所有结点有且只有一个前驱结点。 • 树中所有结点可以有零个或多个后继结点。 • 由此特点可知,下图所示的都不是树结构。

  6. 相关术语 • 有序树和无序树:如果一棵树中结点的各子树丛左到右是有次序的,即若交换了某结点各子树的相对位置,则构成不同的树,称这棵树为有序树;反之,则称为无序树。 • 森林:零棵或有限棵不相交的树的集合。 • 任何一棵树,删去根结点就变成了森林。

  7. 表示方法 • 直观表示法 • 嵌套集合表示法 • 广义表表示法 • (A(B(D,E(H,I),F),C(G))) • 凹入表示法

  8. 7.1 树和森林 的表示方法

  9. 树的三种存储结构 一、双亲表示法 二、双亲孩子链表表示法 三、树的二叉链表(孩子-兄弟) 存储表示法

  10. 一、双亲表示法: data parent A 0A-1 1B0 2 C 0 3D 0 4E2 5F2 6G5 r=0 n=7 B C D E F G

  11. 二、双亲孩子链表表示法: data parent firstchild A 0A-1 1B0 2 C0 3D 0 4E2 5F2 6G4 1 2 3 B C D 4 5 child next E F 6 r=0 n=7 G

  12. 三、树的二叉链表 (孩子-兄弟)存储表示法 root A B C E D F G A firstchild data nextsibling B C D E F A B C E D F G G

  13. 树转换为二叉树的转换规则 • 树中所有相邻兄弟之间加一条连线; • 对树中的每个结点,只保留它与第一个孩子结点之间的连线,删去它与其他孩子结点之间的连线; • 以树的根结点为轴心,将整棵树顺时针转动一定的角度,使之结构层次分明。

  14. 森林转换为二叉树的转换规则 • 将森林中的每棵树转换成相应的二叉树; • 第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树根结点的右孩子。

  15. B C D E F G H I J K 例如: B E C D F G H I J K

  16. 由二叉树转换为森林的转换规则为: • 若某结点是其双亲的做孩子,则把该结点的右孩子、右孩子的右孩子……都与该结点的双亲结点用线连起来。 • 删掉原二叉树中所有的双亲结点与右孩子结点的连线。 • 整理由上述两点所得到的树或森林,使之结构层次分明。

  17. D G H I J K B E F 例如: B E C C D F G H I J K

  18. 由此,树的各种操作均可对应二叉树的操作来完成。由此,树的各种操作均可对应二叉树的操作来完成。 应当注意的是,和树对应的二叉树,其左、右子树的概念 已改变为:左是孩子,右是兄弟。

  19. 7.3 树和森林的遍历

  20. 一、树的遍历 二、森林的遍历

  21. 一、树的遍历 树的遍历可有三条搜索路径: 先根(次序)遍历: 若树不空,则先访问根结点,然后依次先根遍历各棵子树。 后根(次序)遍历: 若树不空,则先依次后根遍历各棵子树,然后访问根结点。 按层次遍历: 若树不空,则自上而下自左至右访问树中每个结点。

  22. 先根遍历时顶点的访问次序: A A B C E F G D B C D 后根遍历时顶点的访问次序: E F B E G F C D A G 层次遍历时顶点的访问次序: A B C D E F G

  23. 二、森林的遍历 B C D E F G H I J K 森林由三部分构成: 1.森林中第一棵树的根结点; 2.森林中第一棵树的子树森林; 3.森林中其它树构成的森林。

  24. 森林的遍历 若森林不空,则 访问森林中第一棵树的根结点; 前序遍历森林中第一棵树的子树森林; 前序遍历森林中(除第一棵树之外)其 余树构成的森林。 1. 前序遍历 即:依次从左至右对森林中的每一棵树进行先根遍历。

  25. 2.中序遍历 若森林不空,则 中序遍历森林中第一棵树的子树森林; 访问森林中第一棵树的根结点; 中序遍历森林中(除第一棵树之外)其 余树构成的森林。 即:依次从左至右对森林中的每一棵树进行后根遍历。

  26. B C D E F G H I J K 例如: 前序遍历时顶点的访问次序: B E F C D G H I J K 中序遍历时顶点的访问次序: E F B C I J K H G D

  27. 树的遍历和二叉树遍历的对应关系 ? 树 森林 二叉树 先根遍历 前序遍历 先序遍历 中序遍历 中序遍历 后根遍历

More Related