网站大量收购独家精品文档,联系QQ:2885784924

数据结构--第六章树和二叉树演示幻灯片.ppt

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

第六章 树和二叉树;6.1 树的定义与基本概念;6.1 树的定义与基本概念;一、 树的基本概念;A;数据对象D:一个集合,该集合中的所有元素具有相同的特性。 ;基本操作:;(7) FirstChild(Tree,x): 树Tree存在,x是Tree中的某个结点。若x为非叶子结点,则返回它的第一个孩子结点,否则返回“空”。 (8) NextSibling(Tree,x): 树Tree存在,x是Tree中的某个结点。若x不是其双亲的最后一个孩子结点,则返回x后面的下一个兄弟结点,否则返回“空”。 (9) InsertChild(Tree,p,Child): 树Tree存在,p指向Tree中某个结点,非空树Child与Tree不相交。将Child插入Tree中,做p所指向结点的子树。 ;(10) DeleteChild(Tree,p,i): 树Tree存在,p指向Tree中某个结点,1≤i≤d,d为p所指向结点的度。删除Tree中p所指向结点的第i棵子树。 (11) TraverseTree(Tree,Visit()): 树Tree存在,Visit()是对结点进行访问的函数。按照某种次序对树Tree的每个结点调用Visit()函数访问一次且最多一次。若Visit()失败,则操作失败。 ;结点:;孩子结点、 双亲结点、 兄弟结点、 堂兄弟结点、 祖先结点、 子孙结点;任何一棵非空树是一个二元组 Tree =(root,F) 其中:root 被称为根结点,F 被称为子树森林;二、二叉树的基本操作:;(7) LeftChild(bt,x):求左孩子。若结点x为叶子结点或x不在bt中,则返回“空”。 (8) RightChild(bt,x):求右孩子。若结点x为叶子结点或x不在bt中,则返回“空”。 (9) Traverse(bt): 遍历操作。按某个次序依次访问二叉树中每个结点一次且仅一次。 (10) Clear(bt):清除操作。将二叉树bt置为空树。 ;三、二叉树的性质; 性质 1 : 在二叉树的第 i 层上至多有2i-1 个结点。 (i≥1);性质 2 : 深度为 k 的二叉树上至多含 2k-1 个结点(k≥1); 性质 3 : 对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0 = n2+1;1;1; 性质 4 : 具有 n 个结点的完全二叉树的深度为 ? log2n? +1;性质 5 :;6.3 二叉树的存储结构;将二叉树的所有结点,按一定的顺序存储在一片连续的存储单元中,使用结点之间的相对位置表示结点之间的关系。 可用一维数组存储: bt[n] 顺序:完全二叉树中将编号i的结点存在分量bt[i]中。;A;一般二叉树;单支二叉树;二、链式存储结构;D;typedef struct BiTNode { // 结点结构 TElemType data; struct BiTNode *lchild, *rchild; // 左右孩子指针 } BiTNode, *BiTree;;;三叉链表类型表述如下:;6.4二叉树的遍历;遍历:按一定规律访问二叉树中的每个结点,使得每个结点均被访问一次,而且仅被访问一次。; 对“二叉树”而言,可以有三条有哪些信誉好的足球投注网站路径:;二叉树的有哪些信誉好的足球投注网站路径(先左后右):;二、先左后右的遍历算法;1、先序遍历(DLR)操作过程;2、中序遍历(LDR)操作过程;3、后序遍历(LRD)操作过程;A;a;用二叉树表示表达式;三、遍历算法的递归描述;void InOrder(BiTree root) / *中序遍历二叉树, root为二叉树根结点的指针*/ {if (root!=NULL) { InOrder(root -LChild); /*中序遍历左子树*/ Visit(root -data); /*访问根结点*/ InOrder(root -RChild); /*中序遍历右子树*/ } } ;3、 后序遍历;作业;四、二叉树的应用举例;1. 在二叉树不空的前提下,输出二叉树的根节点;;void Preorder (BiTree root) { if (root!=NULL) { printf(“%c”,root-data); Preorder(root-lchild);

文档评论(0)

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

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

1亿VIP精品文档

相关文档