帮忙讲解一下二叉树递归函数的执行过程?
#include "stdafx.h"#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree(BiTree &T)
{
char p;
scanf("%c",&p);
if(p==' ')
T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));
T->data=p;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return (T);
}
void PreOrder(BiTree &T)
{
if(T)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree &T)//这个中序是如何遍历二叉树,函数是如何执行的?
{
if(T)
{
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree &T)//这个后序呢?
{
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
print("%c",T->data);
}
}
int main(int argc, char* argv[])
{
BiTree Ta;
CreateBiTree(Ta);
printf("先序遍历:");
PreOrder(Ta);
printf("\n");
printf("中序遍历:");
printf("\n");
InOrder(Ta);
printf("\n");
printf("后序遍历:");
printf("\n");
PostOrder(Ta);
printf("\n");
return 0;
}