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

第5章树和二叉树 数据结构C语言第三版(精品·公开课件).ppt

第5章树和二叉树 数据结构C语言第三版(精品·公开课件).ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
先根次序遍历:1,2,4,8,9,5,10,11,3,6,12,7 中根次序遍历:8,4,9,2,10,5,11,1,12,6,3,7 后根次序遍历:8,9,4,10,11,5,2,12,6,7,3,1 先根序遍历:1,2,4,8,9,5,10,11,3,6,12,13,7,14,15 中根序遍历:8,4,9,2,10,5,11,1,12,6,13,3,14,7,15 后根序遍历:8,9,4,10,11,5,2,12,13,6,14,15,7,3,1 先序遍历(Preorder Traversal) void PreOrder(BiTree bt) /*先序遍历二叉树bt*/ {if (bt==NULL) return; /*递归调用的结束条件*/ Visit(bt-data); /*访问结点的数据域*/ PreOrder(bt-lchild); /*先序递归遍历bt的左子树*/ PreOrder(bt-rchild); /*先序递归遍历bt的右子树*/ } 中序遍历(Inorder Traversal) void InOrder(BiTree bt) /*中序遍历二叉树bt*/ {if (bt==NULL) return; /*递归调用的结束条件*/ InOrder(bt-lchild); /*中序递归遍历bt的左子树*/ Visit(bt-data); /*访问结点的数据域*/ InOrder(bt-rchild); /*中序递归遍历bt的右子树*/ } 后序遍历(Postorder Traversal) void PostOrder(BiTree bt) /*后序遍历二叉树bt*/ {if (bt==NULL) return; /*递归调用的结束条件*/ PostOrder(bt-lchild); /*后序递归遍历bt的左子树*/ PostOrder(bt-rchild); /*后序递归遍历bt的右子树*/ Visit(bt-data); /*访问结点的数据域*/ } G H D E F B C A 图 5-19 按层次遍历该二叉树的序列为: ABCDEFGH 4.按层次遍历 实现方法为从上层到下层,每层中从左侧到右侧依次访问每个结点。下面我们将给出一棵二叉树及其按层次顺序访问其中每个结点的遍历序列。 5.2.5二叉树的其他操作举例 例5.1查找数据元素 查找结点FindNode(*b,x) BTNode *FindNode(BTNode *b,ElemType x) { BTNode *p; if (b==NULL) return NULL; else if (b-data==x) return b; else { p=FindNode(b-lchild,x); if (p!=NULL) return p; else return FindNode(b-rchild,x); } } 例5.2统计给定二叉树的叶子结点数目。 算法5.9:求二叉树的叶子数 int countleaf( bitreptr root) //先根遍历根指针为root的二叉树以计算其叶子数 { int i; if(root==NULL) i=0; else if((root-lchild==NULL)(root-rchild==NULL)) i=1; else i=count2(root-lchild)+count2(root-rchild); return(i); } 例5.3求二叉树的深度运算。 求二叉树的高度的递归模型f()如下: f(NULL)=0 f(b)=MAX{f(b-lchild),f(b-rchild)}+1 其他情况 算法5.11 int TreeDepth(BiTree *bt) { int hl,hr,max; if(bt!=NULL) { hl=PostTreeDepth(bt-LChild); /*求左子树的深度*/ hr=PostTreeDepth(bt-RChild); /*求右子树的深度*/ max=hlhr?hl

文档评论(0)

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

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

1亿VIP精品文档

相关文档