第5章树和二叉树--2.ppt

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

§6.3 遍历二叉树 6.3.1 先序、中序和后序遍历 6.3.2 算术表达式的二叉树表示 6.3.3 二叉树的运算举例 6.3.4 按层次遍历二叉树 6.3.5 创建二叉链表 举例1. 计算二叉树中的结点数: 方法一: int Number(BiTree bt){ //二叉树结点数=1+左子树结点数+右子树结点数 if(!bt) return 0; //空二叉树,没有结点 else { nl=Number(bt-lchild);//计算左子树结点数 nr=Number(bt-rchild);//计算右子树结点数 return 1+nl+nr; } } 计算二叉树中的结点数之方法二: void Number(BiTree bt, int n) { //通过变参传递累加器n的值,n在传入时应赋初值0 if(!bt) return; n++; //累加结点数 Number(bt-lchild, n); Number(bt-rchild, n); } 计算二叉树中的结点数之方法三: void Number(BiTree bt) { //通过全局变量n传递累加器的值,n的初值为0 if(!bt) return; n++; //n是全局变量 Number(bt-lchild); Number(bt-rchild); } 举例2,计算二叉树中叶子的数目: 方法一: int Leafs(BiTree bt) { //叶子数=左子树叶子数+右子树叶子数 if(!bt) return 0; //空二叉树 if(!bt-lchild !bt-rchild) return 1; //树叶 LL=Leafs(bt-lchild); //计算左子树的叶子数 LR=Leafs(bt-rchild); //计算右子树的叶子数 return LL+LR; } 计算二叉树中叶子的数目之方法二: void Leafs(BiTree bt,int n){ //在对二叉树的遍历过程中对叶子数计数, n的初值为0 if(!bt) return ; if(!bt-lchild !bt-rchild) n++; //叶子 Leafs(bt-lchild, n); Leafs(bt-rchild, n); } 举例3,计算二叉树的深度: 方法一: int Height(BiTree bt) { //H=1+Max(左子树深度,右子树深度) if(!bt) return 0; hl=Height(bt-lchild); //计算bt的左子树深度 hr=Height(bt-rchild); //计算bt的右子树深度 return 1+(hlhr ? hl:hr) } 举例3,计算二叉树的深度: 方法二(P124算法6.4): void Height(BiTree bt, int h, int depth){ //h为当前结点的层次值,h的初值为1; //depth为当前求得的最大深度,depth的初值为0 if(bt){ if(hdepth) depth=h; Height(bt-lchild,h+1,depth);//遍历左子树 Height(bt-rchild,h+1,depth);//遍历右子树 }//end if }//Height 举例4,互换二叉树的左右子树: 方法一: void Exchange(BiTree bt) { if(!bt)return; bt-lchild?bt-rchild; //互换bt的左右子树 Exchange(bt-lchild); Exchange(bt-rchild); } 互换二叉树的左右子树之方法二: void Exchange(BiTree bt) { if(!bt)return; Exchange(bt-lchild); Exchange(bt-rchild); bt-lchild?bt-rchild; //互换bt的左右子树 } 互换二叉树的左右子树之方法三: void Exchange(BiTree bt){ if

文档评论(0)

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

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

1亿VIP精品文档

相关文档