急求,关于树的遍历的三种遍历的代码

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:04:28
设二叉树结点值为大写字母,输入二叉树的前序遍历和中序遍历序列,生成此二叉树,
输出该二叉树的后序遍历和按层次遍历序列。输入某结点值,在二叉树中查找该结点,
若该结点存在,则输出从根到该结点的路径,否则给出不存在信息。
C语言的

本贴给出二叉树先序、中序、后序三种遍历的非递归算法,此三个算法可视为标准算法,直接用于考研答题。

1.先序遍历非递归算法
#define maxsize 100
typedef struct
{
Bitree Elem[maxsize];
int top;
}SqStack;

void PreOrderUnrec(Bitree t)
{
SqStack s;
StackInit(s);
p=t;

while (p!=null || !StackEmpty(s))
{
while (p!=null) //遍历左子树
{
visite(p->data);
push(s,p);
p=p->lchild;
}//endwhile

if (!StackEmpty(s)) //通过下一次循环中的内嵌while实现右子树遍历
{
p=pop(s);
p=p->rchild;
}//endif

}//endwhile

}//PreOrderUnrec

2.中序遍历非递归算法
#define maxsize 100
typedef struct
{
Bitree Elem[maxsize];
int top;
}SqStack;

void InOrderUnrec(Bitree t)
{