关于二cha树的问题
提示: 作者被禁止或删除 内容自动屏蔽
程序代码:#include <stdio.h>
#include <malloc.h>
#define maxsize 100
typedef char ElemType;
typedef struct node
{
ElemType data;
struct node *lchild,*rchild;
}BiNode,*BiTree;
typedef struct stack
{
int tag;
BiTree t;
}stack;
BiTree CreatBiTree();
void Way_to_root(BiTree T,ElemType x);
int main()
{
BiTree T;
ElemType x;
T=CreatBiTree();
getchar();
scanf("%c",&x);
Way_to_root(T,x);
return 0;
}
BiTree CreatBiTree()
{
BiTree T = NULL;
ElemType x;
scanf("%c",&x);
if(x!='@')
{
T=(BiTree)malloc(sizeof(BiNode));
T->data=x;
T->lchild=CreatBiTree();
T->rchild=CreatBiTree();
}
return T;
}
void Way_to_root(BiTree T,ElemType x)//查找路径函数
{
BiTree p;
stack tree[maxsize];
int i,k;
i=0;
p=T;
while(i>0||p)
{
while(p)
{
tree[++i].t=p;
tree[i].tag=0;
p=p->lchild;
}
while(tree[i].tag==1&&i>0)
{
if(tree[i].t->data==x)//出栈时进行比较
{
for(k=1;k<=i;k++) printf("%c ",tree[k].t->data);
return ;
}
i--;
}
if(i>0)
{
p=tree[i].t->rchild;
tree[i].tag=1;
}
}
}