试编写一个非递归算法,实现求以二叉链表存储的二叉树中q结点的祖先。

admin2012-06-21  77

问题 试编写一个非递归算法,实现求以二叉链表存储的二叉树中q结点的祖先。

选项

答案该题可采用按后序遍历二叉树的非递归算法,当访问q结点时,结点栈中所有栈元素均为q结点的祖先。 #define MAX 1000 void Ancestor(BTTree*T,BTNode*q) { BTNode*s[MAX];//栈实现非递归 BTNode*p=T; int b[MAX]; int top==-1: do{ while(p) { s[++top]=p; b[top]=0; P=p->lchild; } if(top>-1&&b[top]==1) { p=s[top]; if(p==q) { printf("q结点的祖先是:\n"); for(int i=0;i<=top;i++) printf("%c",s[i]->data); return; } else top--; } if(top>-1) { p=s[top]->rchild; b[top]=1; } }while(top>-1); }

解析
转载请注明原文地址:https://jikaoti.com/ti/nEajFFFM
0

最新回复(0)