复杂数据结构.pptVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
复杂数据结构.ppt

零基础学算法 第3章:复杂数据结构 课程安排 3.1 层次关系结构:树 3.2 网状关系:图 3.1 层次关系结构:树 3.1.1 树的概念 3.1.2 二叉树的概念 3.1.3 二叉树的存储 3.1.4 操作二叉树 3.1.5 遍历二叉树 3.1.6 测试二叉树 3.1.7 线索二叉树 3.1.8 最优二叉树(赫夫曼树) 3.1 层次关系结构:树 1.树的定义 2.树的相关术语 3.树的表示 (A(B(E)),(C(F(J)),(G(K,L))),(D(H),(I(M,N)))) 3.1.1 树的概念 3.1 层次关系结构:树 3.1.2 二叉树的概念 3.1 层次关系结构:树 3.1.2 二叉树的概念 根据二叉树的定义,可得知其具有以下性质: (1)在二叉树中,第i层的结点总数最多有2i-1个结点。 (2)深度为k的二叉树最多有2k-1个结点(k=1),最少有k个结点。 (3)对于一棵二叉树,如果其叶结点数为n0,而度为2的结点总数为n2,则n0=n2+1。 (4)具有n个结点的完全二叉树的深度k为:k=[log2n]+1。 (5)有n个结点的完全二叉树各结点如果用顺序方式存储,对任意结点i,有如下关系: 如果i != 1,则其父结点的编号为i/2; 如果2*i=n,则其左子树根结点的编号为2*i;若2*in,则无左子树; 如果2*i+1=n,则其右子树根结点编号为2*i+1;若2*i+1n,则无右子树。 3.1 层次关系结构:树 3.1.3 二叉树的存储 1. 顺序存储结构 二叉树顺序存储结构的数据定义如下: #define MAXSIZE 100 //最大结点数 typedef int DATA; //元素类型 typedef DATA SeqBinTree[MAXSIZE]; SeqBinTree SBT; //定义保存二叉树数组 3.1 层次关系结构:树 3.1.3 二叉树的存储 2. 链式存储结构 二叉链式结构 三叉链式结构 typedef struct ChainTree { DATA data; struct ChainTree *left; struct ChainTree *right; }ChainTreeType; ChainTreeType *root=NULL; typedef struct ChainTree { DATA data; struct ChainTree *left; struct ChainTree *right; struct ChainTree *parent; }ChainTreeType; ChainTreeType *root=NULL; 3.1 层次关系结构:树 3.1.4 操作二叉树 1.定义二叉链式结构 2.初始化二叉树 3.添加结点到二叉树 4.获取二叉树左右子树 5.获取二叉树状态 6.在二叉树中查找 7.清空二叉树 3.1 层次关系结构:树 3.1.5 遍历二叉树 先序遍历(DLR):称为先根次序遍历,即先访问根结点,再按先序遍历左子树,最后按先序遍历右子树。 中序遍历(LDR):称为中根次序遍历,即先按中序遍历左子树,再访问根结点,最后按中序遍历右子树。 后序遍历(LRD):称为后根次数遍历,即先按后序遍历左子树,再按后序遍历右子树,最后访问根结点。 按层遍历:按二叉树的层进行遍历,可更直观地从图中得出遍历的结果。 3.1 层次关系结构:树 3.1.6 测试二叉树 编写程序测试二叉树,在该测试程序中,将创建二叉树,并向二叉树中添加结点,然后能按4种方法进行遍历。 3.1 层次关系结构:树 3.1.7 线索二叉树 1.线索二叉树的表示 中序:B F D A C G E H 3.1 层次关系结构:树 3.1.7 线索二叉树 1.线索二叉树的表示 typedef struct ThreadTree { DATA data; NodeFlag lflag; NodeFlag rflag; struct ThreadTree *left; struct ThreadTree *right; }ThreadBinTree; 3.1 层次关系结构:树 3.1.7 线索二叉树 创建线索二叉树 操作线索二叉树 遍历线索二叉树 测试线索二叉树 3.1 层次关系结构:树

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档