第二讲树和二叉树.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二讲树和二叉树

6.1 树的定义和基本术语 1、树的定义 树是由n (n ? 0)个结点组成的有限集合T。如果n = 0,称为空树;如果n 0,则T满足以下两个条件: (1) 有且只有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱; (2)除根以外的其它结点划分为m (m ? 0)个互不相交的有限集合T1, T2, …, Tm,其中每个集合又是一棵树,并且称之为根的子树(subTree)。每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个直接后继。 6.1 树的定义和基本术语 2、树形结构 1)树中只有根结点没有前趋;除根外,其余结点都有且仅一 个前趋; 2)树的结点,可以有零个或多个后继; 3)树是一种分支关系的层次结构 3、树的表示 二叉链表树结点的描述 typedef int datatype; typedef struct node { datatype data; struct node *lchild,*rchild; } bitree; bitree *root; 6.6 赫夫曼树及其应用 本节要点: 与树相关的几个概念 赫夫曼树的概念 构造赫夫曼树的方法(赫夫曼算法) 6.6.1 与树相关的几个概念 路径:从树中一个结点到另一个结点之间的 分支构成这两个结点之间的路径。 6.6.2 赫夫曼树的概念 赫夫曼树:    假设有n个权值(w1 , w2 , … , wn ),构造有n个叶子结点的二叉树,每个叶子结点有一个 wi 作为它的权值。则带权路径长度最小的二叉树称为赫夫曼树。 构造赫夫曼树的步骤: (1). 根据给定的n个权值(w1 , w2 , … , wn ) ,构成 n棵只有一个根结点的二叉树, n个权值分别 是这些二叉树根结点的权。设F是由这n棵二叉 树构成的集合 (2). 在F中选取两棵根结点权值最小的树作为左、 右子树,构造一棵新的二叉树,置新二叉树根 结点的权值=左、右子树根结点权值之和; (3).从F中删除这两棵树,并将新树加入F; (4).重复 (2)、(3),直到F中只含一棵树为止。 树的孩子链表类型定义 typedef struct CTNode{ //孩子结点 int child; struct CTNode * next; }* ChildPtr; typedef struct{ TElemType data; ChildPtr firstchild; //孩子链表头指针 }CTBox; typedef struct{ CTBox nodes[MAX_TREE_SIZE]; Int n, r; //结点数和根的位置; }CTree; 0 1 2 3 4 5 6 7 8 …99 I A C B D H G F E 结点数和 根的位置 1 3 ∧ 2 4 5 ∧ 8 ∧ 6 ∧ 7 T.nodes T.n T.r data firstchild 树的孩子链表图示 结点的孩子结点链表 A B C D E F G H I 3 孩子兄弟表示法 孩子兄弟表示法用二叉链表作为树的存贮结构 孩子兄弟表示法类型定义 typedef struct CSNode{ TElemType data; struct CSNode *firstchild, * nextsibling; }CSNode, *CSTree; I A C B D H G F E A I H D G F C E B 树的孩子兄弟表示法图示 B的第一个孩子结点 B的右兄弟结点 I A C B D H G F E 此二叉链表既是树(a) 的孩子兄弟表示又是二叉树(b)的二叉链表 (a) (b) 由此可将 树与二叉树 对应起来 A I H D G F C E B F I A B D H G C E 二、树和二叉树的转换 三 树的遍历 先根遍历 先访问根,然后依次先根遍历根每一颗子树。 例 先根遍历序列 A B E F C G D H I 后根遍历 依次后根遍历根的每一颗子树,然后访问根。 后根遍历序列 E F B G C H I D A 树的先根遍历 对应二叉树的先根遍历;树的后根遍历 对应二叉树的中根遍历。不论是先根遍历还是后根遍历都是对树按深度方向的遍历,也可按宽度方向(按层)遍历树。 I A C B D H G F E 四 森林 森林:树的集合 将森林中树的根看成兄弟,可用树孩子兄弟表示法存储森林;用树与二叉树的转换方法,

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档