假设二叉树采用二叉链存储结构存储,设计一个算法,求出根结点到给定某结点之间的路径,要求: 根据设计思想,采用C或C++语言描述算法,关键之处给出注释。

admin2018-07-17  26

问题 假设二叉树采用二叉链存储结构存储,设计一个算法,求出根结点到给定某结点之间的路径,要求:
根据设计思想,采用C或C++语言描述算法,关键之处给出注释。

选项

答案算法的设计如下: #define MaxSize 100 int AncestoPath(BTNode*b, BTNode *s){ BTNode* st[MaxSize]; BTNode *P; int i,flag,top=—1; do{ while(b!=NULL){ st[++top]=b, b=b—>lchild; } p=NULL; //p指向当前结点的前一个已访问结点 flag=1; //设置b的访问标记为已访问 while(top!=一1 &&flag){ b=st[1top]; //取出栈顶元素 if(b—>rchiid==p){ //右子树不存在或已被访问,访问之 if(b==s){ //找到目标结点,输出路径 for(i=0;i<=top;++i) printf ("%c",st[i]—>data), return 1; } else{ top——; p=b; //p指向刚才访问的结点 } } eise{ b=b—>rchild, //b指向右子树 flag=0; //设置未被访问标记 } } }while(top!=一1); //栈不空时循环 return 0; //其他情况返回0 }

解析
转载请注明原文地址:https://kaotiyun.com/show/ofRi777K
0

最新回复(0)