关于二叉树的遍历得不到结果

来源:百度知道 编辑:UC知道 时间:2024/05/05 18:38:57
#include<stdio.h>
#include<stdlib.h>
typedef struct TreeNode
{
char date;
struct TreeNode *lchild,*rchild;

} TreeNode,*NodePoint;

int main (){

NodePoint T;

void CreatBinary(NodePoint T);
void PreOrder(NodePoint T);
void PostOrder(NodePoint T);
printf("用先序序列建立二叉树:\n");

printf("请输入二叉树拓展序列:\n");

printf("例如123####\n");

CreatBinary(T);

printf("建立完成\n");

PreOrder(T);
PostOrder(T);

}

void CreatBinary(NodePoint T)
{
char date;
date = getchar();

if(date=='#')
{
T= NULL;
}
else
{

if(!(T=(NodePoint)malloc(sizeof(TreeNode))))

exit(1);

T->date = date;

CreatBinary(T->lchild);

CreatBinary(T->rch

你的T没有指向任何值,就是一个野指针!下面是我修改了一下你的程序,能运行:(这里要用到指向指针的指针!)
#include<stdio.h>
#include<stdlib.h>
typedef struct TreeNode
{
char date;
struct TreeNode *lchild,*rchild;

} TreeNode,*NodePoint;

int main (){

NodePoint T;

void CreatBinary(NodePoint *T);
void PreOrder(NodePoint T);
void PostOrder(NodePoint T);
printf("用先序序列建立二叉树:\n");

printf("请输入二叉树拓展序列:\n");

printf("例如123####\n");

CreatBinary(&T);

printf("建立完成\n");

printf("先序遍历\n");
PreOrder(T);
printf("\n");
printf("后续遍历\n");
PostOrder(T);
printf("\n");

return 0;}

void CreatBinary(NodePoint *T)
{
char date;
date=getchar();
if(date=='#')
{
*T= NULL;
}
else
{