数据l构W六章算法设计题[13]_跨考网
1Q对于二叉树(wi)的链接实?/span>,完成非递归的中序遍历过E?/span> ?a target="_blank">中山大学 1999 五?/span> (15?/span>)?/span>
cM本题的另外叙q有Q?/span>
Q?/span>1Q写Z序遍历二叉树(wi)的非递归法?qing)递推法。?a target="_blank">大连事大学1996 六?/span>2 Q?/span>10?/span>)】?/span>
Q?/span>2Q设计一个中序遍历算法,应用栈来存储?wi)结点,要求l点仅能q栈和出栈一ơ。(本题指中序遍历二叉树(wi)Q?a target="_blank">西安?sh)子U技大学1999计应?/span> ?/span> (10?/span>)?/span>
Q?/span>3Q用非递归方式写出二叉?wi)中序遍历算法。?a target="_blank">׃U技大学 2002 六?/span>2 (9?/span>)?/span>
【参考答案?/span>
void InOrder(BiTree bt)
{BiTree s[],p=bt; //s是元素ؓ(f)二叉?wi)结?gu)针的栈,定w_?/span>
int top=0;
while(p || top>0)
{while(p) {s[++top]=p; bt=p->lchild;} //中序遍历左子?/span>
if(top>0){p=s[top--]; printf(p->data); p=p->rchild;} //退栈,讉KQ{叛_?/span>
} }
2Q试l出二叉?wi)的自下而上、自双左的层ơ遍历算法。?a target="_blank">吉林大学 2001 ?/span> ?/span>2 Q?/span>8?/span>)?/span>
【参考答案?/span>
[题目分析] 借助队列和栈Q最后弹出栈中元素实现对二叉?wi)按自下至上Q自双左的层次遍历
void InvertLevel(biTree bt) // 对二叉树(wi)按自下至上,自右臛_的进行层ơ遍?/span>
{if(bt!=null)
{StackInit(s); //栈初始化Q栈中存放二叉树(wi)l点的指?/span>
QueueInit(Q); //队列初始化。队列中存放二叉?wi)结点的指?/span>
QueueIn(Q,bt);
while(!QueueEmpty(Q)) //从上而下层次遍历
{p=QueueOut(Q); push(s,p); //出队, 入栈
if(p->lchild) QueueIn(Q,p->lchild); //若左子女不空Q则入队?/span>
if(p->rchild) QueueIn(Q,p->rchild);} //若右子女不空,则入队列
while(!StackEmpty(s)) {p=pop(s); printf(p->data);} //自下而上,从右到左的层ơ遍?/span>
}//if(bt!=null)
} //l束InvertLevel
3Q在一以二叉链表表示的二叉树(wi)上,试写出用按层ơ顺序遍历二叉树(wi)的方法,l计?wi)中h度ؓ(f)1的结Ҏ(gu)目的法。二叉链表的cd定义为:(x)
TYPE bitreptr=^bnodetp;
bnodetp=RECORD data:char; lchild,rchild:bitreptr END; ?a target="_blank">同济大学 2000 三?/span>2 Q?/span>12分)(j)?/span>
【参考答案?/span>
int Level(BiTree bt) //层次遍历二叉?wi),q统计度?/span>1的结点的个数
{int num=0; //numl计度ؓ(f)1的结点的个数
if(bt){QueueInit(Q); QueueIn(Q,bt)Q?/span>//Q是以二叉?wi)结?gu)针ؓ(f)元素的队?/span>
while(!QueueEmpty(Q))
{p=QueueOut(Q); printf(p->data); //出队,讉Kl点
if(p->lchild && !p->rchild ||!p->lchild && p->rchild)num++;//度ؓ(f)1的结?/span>
if(p->lchild) QueueIn(Q,p->lchild); //非空左子奛_?/span>
if(p->rchild) QueueIn(Q,p->rchild); //非空叛_奛_?/span>
} }//if(bt)
return(num); }//q回度ؓ(f)1的结点的个数
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> |