请教各位大佬关于二叉树的问题
#include<stdio.h>#include<stdlib.h>
typedef struct Node//节点
{
char data;//数据域
struct Node* lchild;
struct Node* rchild;
} *node;
void Create(node root)
{
rewind(stdin);//清除缓冲区(清除\n对数据的读取)
char ch ;
scanf_s("%c",&ch);
if (ch == '#')//控制树的结构
{
root = NULL;
}
else
{
root = (node )malloc(sizeof(node));
(root->data) = ch;
Create(root->lchild);
Create(root->rchild);
}
}
void PreTraverse(node N)//先序遍历
{
if(N!=NULL)
{
printf("%c\t",N->data);
PreTraverse(N->lchild);
PreTraverse(N->rchild);
}
}
void MidTraverse(node N)//中序遍历
{
if(N!=NULL)
{
MidTraverse(N->lchild);
printf("%c",N->data);
MidTraverse(N->rchild);
}
}
void PosTraverse(node N)//后序遍历
{
if(N!=NULL)
{
PosTraverse(N->lchild);
PosTraverse(N->rchild);
printf("%c",N->data);
}
}
void main()
{ node Root;
int depth;
printf("请按先序遍历的顺序输入各节点(#表示没有叶子节点,如:AB##C#D##)\n");
Create( Root);
printf("先序遍历:\n");
PreTraverse(Root);
printf("中序遍历:\n");
MidTraverse(Root);
printf("后序遍历:\n");
PosTraverse(Root);
}
看不出哪错了,
[此贴子已经被作者于2021-6-12 18:44编辑过]