关于二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; } } }