数据l构W六章算法设计题[5]_跨考网
1Q有n个结点的完全二叉?wi)存攑֜一l数l?/span>A[1..n]中,试据此徏立一는二叉链表表示的二叉树(wi) Q根?/span>tree指向?/span> ?a target="_blank">南京理工大学 1998 七?/span>1 Q?/span>6分)(j)?/span>
【参考答案?/span>
BiTree Creat(ElemType A[],int i)
//n个结点的完全二叉?wi)存(sh)一l数l?/span>A中,本算法据此徏立以二叉链表表示的完全二叉树(wi)
{BiTree tree;
if (i<=n){tree=(BiTree)malloc(sizeof(BiNode)); tree->data=A[i];
if(2*i>n) tree->lchild=nullQ?/span>else tree->lchild=Creat(A,2*i)Q?/span>
if(2*i+1>n) tree->rchild=nullQ?/span>else tree->rchild=Creat(A,2*i+1)Q?/span> }
return (tree)Q?/span> }//Creat
[法讨论]初始调用?/span>,i=1?/span>
2Q已知深度ؓ(f)h的二叉树(wi)采用序存储l构已存放于数组BT[1:2h-1]中,请写一非递归法Q生该二叉?wi)的二叉链表l构。设二叉链表中链l点的构造ؓ(f)(lchild,data,rchild),根结Ҏ(gu)在链l点的指针由Tl出。?a target="_blank">北京航空航天大学 1999 七?/span> (15?/span>)?/span>
【参考答案?/span>
[题目分析]二叉?wi)采用顺序存储结构(一l数l)(j)是按完全二叉?wi)的形状存储的,不是完全二叉树(wi)的二叉树(wi)顺序存储时Q要加“虚l点”。数l中的第一个元素是根结炏V本题(sh)采用队列l构?/span>
typedef struct
{BiTree bt; //二叉?wi)结?gu)?/span>
int num; }tnode // num是结点在一l数l中的编?/span>
tnode Q[maxsize]; //循环队列,定w_?/span>
void creat(BiTree T,ElemType BT[ ])
//深度h的二叉树(wi)存(sh)一l数l?/span>BT[1:2h-1]中,本算法生成该二叉?wi)的二叉链表存储l构
{tnode tq; //tq是队列元?/span>
int len=2h-1; //数组长度
T=(BiTree)malloc(sizeof(BiNode)); //甌l点
T->data=BT[1]; //根结Ҏ(gu)?/span>
tq.bt=T; tq.num=1;
Q[1]=tq; //根入队列
front=0;rear=1; //循环队列头、尾指针
while(front!=rear) //当队列不I时循环
{front=(front+1) % maxsize ;
tq=Q[front] ; p=tq.bt; i=tq.num ; //出队Q取出结点及(qing)~号
if (BT[2*i]==?/span>#?/span>||2*i>len) p->lchild=null; //左子?wi)?f)I,?/span>#’表Cl点
else //建立左子女结点ƈ入队?/span>
{p->lchild=(BiTree) malloc(sizeof(BiNode)); //甌l点I间
p->lchildàdata=BT[2*i]; // 左子x(chng)?/span>
tq.bt=p->lchild; tq.num=2*i; rear=(rear+1) % maxsize ;//计算队尾位置
Q[rear]=tq; //左子女结点及(qing)其编号入?/span>
}
if(BT[2*i+1]==?/span>#?/span>|| 2*i+1>len) p->rchild=null; //叛_?wi)?f)I?/span>
else //建立叛_女结点ƈ入队?/span>
{p->rchild=(BiTree)malloc(sizeof (BiNode); //甌l点I间
p->rchild->data=BT[2*i+1]; tq.bt=p->rchild; tq.num=2*i+1;
rear=(rear+1)%maxsize; Q[rear]=tq; //计算队尾位置,叛_奛_(qing)其编号入?/span>
}
} //while
}//l束creat
[法讨论] 本题?sh)的虚结点用?/span>#’表C。应Ҏ(gu)二叉?wi)的l点数据的类型而定?/span>
2022考研初复试已l接q尾壎ͼ考研学子全面q入2023届备?/b>Q跨考ؓ(f)23考研的考生准备?0大课包全E准备、全q复?fn)备考计划、目标院校专业辅对{全真复试模拟练?fn)和全程针对性指|2023考研的小伙伴针也已经开始择校和复习(fn)?jin),跨考考研畅学5.0版本全新升Q无Z在校在家都可以更自如的完成你的考研复习(fn)Q?/a>暑假集训?/span>带来?jin)院校专业初步选择Q明方向;考研备考全q规划,核心(j)知识点入门;个性化制定备考方案,助你赢在赯U,早出发一点离成功更q一点!
点击右侧咨询?/strong>直接前往?jin)解更?/strong>
考研院校专业选择和考研复习(fn)计划 | |||
2023备考学?/td> | 2023U上U下随时学习(fn) | 34所自划UK校考研复试分数U汇?/td> | |
2022考研复试最全信息整?/a> | 全国各招生院校考研复试分数U汇?/a> | ||
2023全日制封闭训l?/span> | 全国各招生院校考研调剂信息汇?/a> | ||
2023考研先知 | 考研考试U目有哪些? | 如何正确看待考研分数U? | |
不同院校相同专业如何选择更适合自己?/a> | 从就业说考研如何择专业? | ||
手把手教你如何选专业? | 高校研究生教育各学科门类排行?/a> |
相关推荐
跨考考研评
班型 | 定向班型 | 开班时?/td> | 高定?/td> | 标准?/td> | 评介绍 | 咨询 |
U季集训 | 冲刺?/td> | 9.10-12.20 | 168000 | 24800?/td> | 班面授+专业??+专业译֮向辅?协议加强评(高定?+专属规划{疑(高定?+_化答?复试资源(高定?+复试译(高定?+复试指导(高定?+复试班主?v1服务(高定?+复试面授密训(高定?+复试1v1(高定? | |
2023集训畅学 | 非定向(政英?数政qQ?/td> | 每月20?/td> | 22800?协议? | 13800?/td> | 先行阶在U课E?基础阶在U课E?强化阶在U课E?真题阶在U课E?冲刺阶在U课E?专业NҎ(gu)一对一评+班主dE督学服?全程规划体系+全程试体系+全程_化答?择校择专业能力定位体p?全年关键环节指导体系+初试加强?初试专属服务+复试全科标准班服?/td> |