该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}node,size;
node *base;
node *top;
/******************************/
int print(node *T)
{
if(!T) return 0;
printf("%c",T->data);return 1;
}
/************建立二叉树***************/
node *init(node *T)
{
T=(node *)malloc(sizeof(size));
scanf("%c",&T->data);
if(T->data=='0')
{ delete(T);
T=NULL;return T;}
else
{
T->lchild=init(T->lchild);
T->rchild=init(T->rchild);
}
return T;
}
**************************/
int levelorder(node *T)
{
//node *base;
return 0;
}
int InOrderTraverse(node T, int (*visit)(node*)) {
// 算法6.2
// 采用二叉链表存储结构,Visit是对数据元素操作的应用函数。
// 中序遍历二叉树T的非递归算法,对每个数据元素调用函数Visit。
node *p=&T;
base=(node *)malloc(100*sizeof(node));
top=base;
*base=*p;
top++;
while (base!=top)
{
while (&p)
{
*top=*p->lchild;
top++;
p=p->lchild;
} // 向左走到尽头
top--; // 空指针退栈
if (base!=top)
{ // 访问结点,向右一步
visit(p);
top--;
visit(p);
*top=*p->rchild;
top++;
}
}
return 1;
} // InOrderTraverse
void main()
{
node *ss;
ss=init(ss);
// preorder(ss);
// preorder(ss,print);
//printf("\n");
// inorder(ss);
//printf("\n");
// postorder(ss);
InOrderTraverse(*ss,print);
}