二叉书的先序递归遍历,递归打印不出来

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. typedef struct treenode
  5. {
  6.     char data;
  7.     struct treenode * lchild,* rchild;
  8. }twotree,*tree;
  9. void Createfirstree(tree q)                        //先序创建二叉树 
  10. {
  11.     char ch;
  12.     scanf("%c",&ch);
  13.     if(ch=='*')    q=NULL;
  14.     else
  15.     {
  16.         q=(twotree*)malloc(sizeof(struct treenode));
  17.         q->data=ch;                                
  18.         Createfirstree(q->lchild);                        
  19.         Createfirstree(q->rchild);
  20.     }
  21. }
  22. void firstprintf(tree p)                        //先根打印二叉树 
  23. {
  24.     while(p)
  25.     {
  26.         printf("%c",p->data);
  27.         firstprintf(p->lchild);
  28.         firstprintf(p->rchild);
  29.     }
  30. }
  31.  
  32. int main()                        
  33. {
  34.     twotree s;
  35.     Createfirstree(&s);
  36.     firstprintf(&s);
  37.     return 0;
  38. }
  39.  

while(p)变死循环了吧,判断不为空就可以了

你写 while 干啥?只需要在最开始加上 p == null 就 return 就行了

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct treenode
{
    char data;
    struct treenode * lchild,* rchild;
}twotree,*tree;
void Createfirstree(tree &q)                        //先序创建二叉树
{
    char ch;
    scanf("%c",&ch);
    if(ch=='*')    q=NULL;
    else
    {
        q=(twotree*)malloc(sizeof(struct treenode));
        q->data=ch;
        Createfirstree(q->lchild);
        Createfirstree(q->rchild);
    }
}
void firstprintf(tree p)                        //先根打印二叉树
{
    if(p)
    {
        printf("%c",p->data);
        firstprintf(p->lchild);
        firstprintf(p->rchild);
    }
}

int main()
{
    tree s;
    Createfirstree(s);
    firstprintf(s);
    return 0;
}
// 124**5**36**7**

要不你用引用吧,别用指针。

你使用指针,先序创建二叉树就会出错,按理来说指针可以用,但是我也不知道为什么就是建不了树。

源文件后缀为cpp,哪里出问题啦?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html