数据l构W六章算法设计题[9]_跨考网
1Q设一二叉树(wi)的结点结构ؓ(f) (LLINK,INFO,RLINK),ROOT为指向该二叉?wi)根l点的指针,p?/span>q分别为指向该二叉?wi)中L两个l点的指针,试编写一法ANCESTORQ?/span>ROOTQ?/span>p,q,rQ?/span>,该算法找?/span>p?/span>q的最q共同祖先结?/span>r。?a target="_blank">吉林大学 2000 二?/span>3 Q?/span>12分)(j)】?a target="_blank">中山大学 1994 六(15分)(j)?/span>
【参考答案?/span>
.[题目分析]后序遍历最后访问根l点Q即在递归法中,Ҏ(gu)压在栈底的。采用后序非递归法Q栈中存放二叉树(wi)l点的指针,当访问到某结Ҏ(gu)Q栈中所有元素均l点的祖先。本题要?/span>p?/span>q 的最q共同祖先结?/span>r ,不失一般性,?/span>p?/span>q的左辏V后序遍历必然先遍历到结?/span>pQ栈中元素均?/span>p的祖先。将栈拷入另一辅助栈中。再l箋遍历到结?/span>qӞ栈中元素从栈顶开始逐个到辅助栈中去匚wQ第一个匹配(即相{)(j)的元素就是结?/span>p ?/span>q的最q公q先?/span>
typedef struct
{BiTree t;int tag;//tag=0 表示l点的左子女已被讉KQ?/span>tag=1表示l点的右子女已被讉K
}stack;
stack s[],s1[];//栈,定w够大
BiTree Ancestor(BiTree ROOT,p,q,r)//求二叉树(wi)上结?/span>p?/span>q的最q的共同先l点r?/span>
{top=0; bt=ROOT;
while(bt!=null ||top>0)
{while(bt!=null && bt!=p && bt!=q) //l点入栈
{s[++top].t=bt; s[top].tag=0; bt=bt->lchild;} //沿左分枝向下
if(bt==p) //不失一般性,假定p?/span>q的左?/span>,遇结?/span>pӞ栈中元素均ؓ(f)p的祖先结?/span>
{for(i=1;i<=top;i++) s1[i]=s[i]; top1=top; }//栈s的元素{入辅助栈s1 保存
if(bt==q) //扑ֈq l点?/span>
for(i=top;i>0;i--)//Q将栈中元素的树(wi)l点?/span>s1d?/span>
{pp=s[i].t;
for (j=top1;j>0;j--)
if(s1[j].t==pp) {printf(?/span>p ?/span>q的最q共同的先已找到?/span>)Q?/span>return (pp);}
?/span>
while(top!=0 && s[top].tag==1) top--; //退?/span>
if (top!=0)?/span>s[top].tag=1;bt=s[top].t->rchild;?/span> //沿右分枝向下遍历
}//l束while(bt!=null ||top>0)
return(null);//q?/span>p无公q?/span>
?/span>//l束Ancestor
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> |