- 论坛徽章:
- 0
|
会出现段错误,不知道是哪里问题。
程序要求创建一个二叉树,并按前序、中序、后序的方式显示。
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct Tnode {
- struct Tnode * left;
- struct Tnode * right;
- int tag;
- char data;
- }* node;
- void CreateBintree(node Lnode)
- {
- char e;
- Lnode = (node) malloc(sizeof (struct Tnode));
- printf ("size of Lnode = %d\n", sizeof(*Lnode));
- printf ("size of bool %d\n", sizeof (Lnode -> tag));
- printf ("First Lnode malloc complete! \n");
- scanf("%s",&e);
- if (e == '.') {
- Lnode -> tag = 0;
- printf ("Lnode tag : 0 \n");
- return;
- }
- else Lnode -> tag = 1;
- Lnode -> data = e;
- printf ("Lnode.data : %c\n", Lnode -> data);
- printf ("scanf First complete! \n ");
- CreateBintree(Lnode -> left);
- printf ("Create left\n");
- CreateBintree(Lnode -> right);
- printf ("Create right\n");
- return;
- }
-
- void PreBintree(node Lnode)
- {
- if (!Lnode->tag) return;
- printf (" %d ",Lnode -> data);
- PreBintree(Lnode -> left);
- PreBintree(Lnode -> right);
- return;
- }
- void MidBintree(node Lnode)
- {
- if (!Lnode->tag) return;
- PreBintree(Lnode -> left);
- printf (" %d ",Lnode -> data);
- PreBintree(Lnode -> right);
- return;
- }
- void PastBintree(node Lnode)
- {
- if (!Lnode->tag) return;
- PreBintree(Lnode -> left);
- PreBintree(Lnode -> right);
- printf (" %d ",Lnode -> data);
- return;
- }
- int main (void)
- {
- char * hello="Hello,World! Now , It is bintree!";
- printf ("%s\n",hello);
- node Bintree = (node) malloc (sizeof (struct Tnode));;
- printf ("malloc Bintree complete! \n");
- printf ("Bintree address: %x \n", Bintree);
- CreateBintree(Bintree);
- printf ("Pre Order:\t");
- PreBintree(Bintree);
- MidBintree(Bintree);
- PastBintree(Bintree);
- return 0;
- }
复制代码 |
|