后序遍历二叉树

来源:百度知道 编辑:UC知道 时间:2024/06/25 19:02:26
后序遍历二叉树程序代码、试验报告

#include<stdio.h>
typedef struct BiTNode{//二叉树结构体
char item;
struct BiTNode * lchild,*rchild;
}BiTNode,*BiTree;
typedef struct Stack{//链栈栈的存储结构体
BiTree data;
struct Stack *next;
}Stack,*st;

BiTree CreateTree()
{BiTree T;
char ch;
ch=getchar();
if(ch=='#')
return NULL;
else
{ T=(BiTree)malloc(sizeof(BiTNode));
T->item=ch;
T->lchild=CreateTree();
T->rchild=CreateTree();
return T;
}
}
void Porder(BiTree T)//先序遍历二叉树
{BiTree p;
st top; //链栈头指针
st s; //链栈结点
top=NULL;
p=T;
while(p||top) //栈不空与二叉树结点不空
{
if(p)
{ printf("%3c",p->item);
s=(st)malloc(sizeof(Stack));//在栈中生成新的结点
s->data=p;
s->next=top;//将链栈链接起来
top=s; //此时栈头top=s;
p=p->lchild; //一直向左走
}
else
{ s=top;