求助,想知道求一颗二叉树所有直径及路径长度怎么做,中根和后根次序...
发布网友
发布时间:2022-04-28 10:32
我来回答
共1个回答
热心网友
时间:2022-04-18 14:57
这实际上是找p的所有祖先,给你一个找祖先的算法,其余自己弄
我程序里的bitree=bintree,bitnode=bintnode
void
ancestor(bitree
root,char
x)
//找x的祖先
{
typedef
struct
{
bitree
t;
int
tag;//tag=0表示访问左子树,tag=1表示访问右子树
}stack;
stack
s[100];int
top=0;
while(root||top)
{
while(root&&root->data!=x)
{
s[++top].t=root;s[top].tag=0;root=root->lchild;//访问左子树
}
if(root&&root->data==x)
{
printf("%c的祖先节点为:\n",x);
for(int
i=1;i<=top;i++)printf("%c\n",s[i].t->data);return;
}
while(top&&s[top].tag==1)top--;//退栈
if(top)
{
s[top].tag=1;root=s[top].t->rchild;//访问右子树
}
}
}