ImageVerifierCode 换一换
格式:DOC , 页数:7 ,大小:144KB ,
资源ID:3102090      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3102090.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构二叉树习题含答案.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

数据结构二叉树习题含答案.doc

1、第 6 章 树和二叉树1 选 择 题( 1) 把 一 棵 树 转 换 为 二 叉 树 后 , 这 棵 二 叉 树 的 形 态 是 ( ) 。 A唯 一 的 有 多 种C有多种,但根结点都没有左孩子 有多种,但根结点都没有右孩子( 2) 由 3 个结点可以构造出多少种不同的二叉树?( )A2 B3 C4 D5 ( 3) 一棵完全二叉树上有 1001 个结点,其中叶子结点的个数是( ) 。A250 B 500 C254 D501 ( 4) 一个具有 1025 个结点的二叉树的高 h 为( ) 。A11 B10 C11 至 1025 之间 D10 至 1024 之间( 5) 深度为 h 的满 m 叉

2、树的第 k 层有( )个结点。(1=lchild=NULL /判断该结点是否是叶子结点(左孩子右孩子都为空) ,若是则返回 1elsereturn LeafNodeCount(T-lchild)+LeafNodeCount(T-rchild);( 2) 判别两棵树是否相等。( 3) 交换二叉树每个结点的左孩子和右孩子。void ChangeLR(BiTree if(T-lchild=NULLelsetemp = T-lchild;T-lchild = T-rchild;T-rchild = temp;weight parent lchild rchild1 3 8 0 02 12 12 0 0

3、3 7 10 0 04 4 9 0 05 2 8 0 06 8 10 0 07 11 11 0 08 5 9 5 19 9 11 4 810 15 12 3 611 20 13 9 712 27 13 2 1013 47 0 11 12ChangeLR(T-lchild);ChangeLR(T-rchild);( 4) 设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树) 。void DoubleTraverse(BiTree T)if(T = NULL)return;else if(T-

4、lchild=NULLelsecoutdata;DoubleTraverse(T-lchild);coutdata;DoubleTraverse(T-rchild);( 5) 计算二叉树最大的宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值) 。题目分析 求二叉树高度的算法见上题。求最大宽度可采用层次遍历的方法,记下各层结点数,每层遍历完毕,若结点数大于原先最大宽度,则修改最大宽度。int Width(BiTree bt)/求二叉树 bt 的最大宽度if (bt=null) return (0); /空二叉树宽度为 0else BiTree Q;/Q 是队列,元素为二叉树结点指针,容量

5、足够大front=1;rear=1;last=1;/front 队头指针,rear 队尾指针,last 同层最右结点在队列中的位置temp=0; maxw=0; /temp 记局部宽度, maxw 记最大宽度Qrear=bt; /根结点入队列while(frontlchild!=null) Q+rear=p-lchild; /左子女入队if (p-rchild!=null) Q+rear=p-rchild; /右子女入队if (frontlast) /一层结束, last=rear;if(tempmaxw) maxw=temp;/last 指向下层最右元素, 更新当前最大宽度temp=0;/i

6、f /whilereturn (maxw);/结束 width( 6) 用按层次顺序遍历二叉树的方法,统计树中具有度为 1 的结点数目。int Level(BiTree bt) /层次遍历二叉树,并统计度为 1 的结点的个数int num=0; /num 统计度为 1 的结点的个数if(bt)QueueInit(Q); QueueIn(Q,bt);/Q 是以二叉树结点指针为元素的队列while(!QueueEmpty(Q)p=QueueOut(Q); printf(p-data); /出队,访问结点if(p-lchild /度为 1 的结点if(p-lchild) QueueIn(Q,p-lc

7、hild); /非空左子女入队if(p-rchild) QueueIn(Q,p-rchild); /非空右子女入队 /if(bt) return(num); /返回度为 1 的结点的个数 ( 7) 求任意二叉树中第一条最长的路径长度,并输出此路径上各结点的值。题目分析因为后序遍历栈中保留当前结点的祖先的信息,用一变量保存栈的最高栈顶指针,每当退栈时,栈顶指针高于保存最高栈顶指针的值时,则将该栈倒入辅助栈中,辅助栈始终保存最长路径长度上的结点,直至后序遍历完毕,则辅助栈中内容即为所求。void LongestPath(BiTree bt)/求二叉树中的第一条最长路径长度BiTree p=bt,l

8、,s; /l, s 是栈,元素是二叉树结点指针,l 中保留当前最长路径中的结点int i,top=0,tag,longest=0;while(p | top0) while(p) s+top=p;tagtop=0; p=p-Lc; /沿左分枝向下if(tagtop=1) /当前结点的右分枝已遍历if(!stop-Lc i0) tagtop=1; p=stop.Rc; /沿右子分枝向下/while(p!=null|top0)/结束 LongestPath( 8) 输出二叉树中从每个叶子结点到根结点的路径。题目分析采用先序遍历的递归方法,当找到叶子结点*b 时,由于*b 叶子结点尚未添加到path 中,因此在输出路径时还需输出 b-data 值。对应的递归算法如下:void AllPath(BTNode *b,ElemType path,int pathlen)int i;if (b!=NULL)if (b-lchild=NULL for (i=pathlen-1;i=0;i-)cout data; /将当前结点放入路径中pathlen+; /路径长度增 1AllPath(b-lchild,path,pathlen); /递归扫描左子树AllPath(b-rchild,path,pathlen); /递归扫描右子树pathlen-; /恢复环境

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。