数据结构第6章二叉树和树习题.ppt

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

第6章 二叉树和树习题 习题6.6: * * 习题6.2: 否 习题6.3: 习题6.4: ? log220? +1 =5 习题6.5: CBA CBA CBA CBA BCA 后 序 ABC CBA ACB BCA BAC 中 序 ABC ABC ABC ABC ABC 前 序 (5) (4) (3) (2) (1) 1 Φ 0 0 Φ 1 0 0 0 1 1 1 习题6.7: (a) 空树、只有根结点的二叉树、右单支二叉树 (b) 空树、只有根结点的二叉树、左支二叉树 (c) 空树、只有根结点的二叉树 习题6.8: void Get_PreOrder(BiTree T,int k,TElemType e) { //求先序序列中第k个位置上结点的值 if(T) {??? c++; //每访问一个子树的根都会使前序序号计数器加1, //c设为全局量 ???? if(c==k) { e=T-data; return;}? ???????? else ???? {?? Get_PreOrder(T-lchild, k, e ); //在左子树中查找 ?????? Get_PreOrder(T-rchild, k ,e); //在右子树中查找 ???? } ?? }//if } //Get_PreOrder 习题6.9: int LeafCount(BiTree T) //求二叉树中叶子结点的数目 { ??if(!T) return 0; //空树没有叶子 ?? else if(!T-lchild!T-rchild) return 1; //叶子结点 ?? else return Leaf_Count(T-lchild)+Leaf_Count(T-rchild); //左子树的叶子数加上右子树的叶子数 } //LeafCount 习题6.10: //交换所有结点的左右子树 void Change_BiTree (BiTree T) { BiTree temp; if(T) {? temp=T-lchild; T-lchild=T-rchild; T-rchild=temp; } //交换左右子树 ?? if(T-lchild) Change_BiTree(T-lchild); ?? if(T-rchild) Change_BiTree (T-rchild); //左右子树再分别交换各自的左右子树 }//Change_BiTree 习题6.11: //求二叉树中以值为x的结点为根的子树深度 int Get_Sub_Depth(BiTree T,int x, int depth) {? if(T-data==x) ?? { depth=Get_Depth(T); return;}//找到了值为x的结点,求其深度 ???else ?? {???if(T-lchild) Get_Sub_Depth(T-lchild,x,depth); ??? if(T-rchild) Get_Sub_Depth(T-rchild,x,depth); } //在左右子树中继续寻找 } //Get_Sub_Depth int Get_Depth(BiTree T) //求子树深度的递归算法 { ??if(!T) return 0; ?? else ?? {???m=Get_Depth(T-lchild); ???? n=Get_Depth(T-rchild); ???? return (mn?m:n)+1; ?? } } //Get_Depth 习题6.12: // 删除所有以元素x为根的子树 void Del_Sub_x(BiTree T,int x) { ?if(T-data==x) Del_Sub(T); //删除该子树 ?? else ?? { ??if(T-lchild) Del_Sub_x(T-lchild,x); ???? if(T-rchild) Del_Sub_x(T-rchild,x); ?? } //else 在左右子树中继续查找 } //Del_Sub_x void Del_Sub(BiTree T) //删除子树T {? if(T-lchild) Del_Sub(T-lchild); ?? if(T-rchild) Del_Sub(T-rchild); ?? free(

文档评论(0)

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

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

1亿VIP精品文档

相关文档