注册 登录
编程论坛 C语言论坛

请教各位大佬关于二叉树的问题

胡晓影 发布于 2021-06-12 18:42, 1432 次点击
#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编辑过]

1 回复
#2
王牌疯姐姐2021-08-06 19:21
把scanf的“-s”去掉
1