鱼C论坛

 找回密码
 立即注册
查看: 4694|回复: 7

二叉树遍历出了点问题,求指点

 关闭 [复制链接]
发表于 2014-11-23 11:50:14 | 显示全部楼层 |阅读模式
10鱼币
创建二叉树用递归是没问题了,遍历递归错哪了?问题出在bianli(t)上
  1. #include<stdio.h>

  2. #include<stdlib.h>
  3. typedef struct tree
  4. {
  5. char a;
  6. struct tree *l,*r;                 //左右孩子
  7. }tree;

  8. tree *creat(tree *t) //设置根为t的二叉树
  9. {
  10. tree *p;
  11. char c;
  12. p=(tree *)malloc(sizeof(tree));
  13. t=p;
  14. scanf("%c",&c);
  15. if(' '==c)
  16. { p=NULL;

  17. }

  18. else
  19. {
  20. p->a=c;
  21. creat(p->l);
  22. creat(p->r);
  23. }
  24. return t;
  25. }

  26. void bianli(tree *t)
  27. {
  28. if(t==NULL)printf("_"); //用下标表示空
  29. else
  30. {
  31. printf("%c\n",t->a);
  32. bianli(t->l);
  33. bianli(t->r);
  34. }
  35. }


  36. void main()
  37. {
  38. tree *t;
  39. t=creat(t);
  40. bianli(t);


  41. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 11:58:29 | 显示全部楼层
是因为没用二重指针吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 12:25:07 | 显示全部楼层
果然是没用二重指针的原因,测试了一下知道原来是创建二叉树时候出的岔子
  1. void main()

  2. {

  3. tree *t;

  4. t=creat(t);
  5. printf("%c\n",t->a);
  6. printf("%c\n",t->l);
  7. printf("%c\n",t->r);





  8. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 13:12:09 | 显示全部楼层
自己找到答案了,小甲鱼老师视频里一带而过,二重指针的用法,找到了篇帖子
http://blog.csdn.net/sdfgh2046/article/details/5647913
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-23 13:17:25 | 显示全部楼层
漠水 发表于 2014-11-23 13:12
自己找到答案了,小甲鱼老师视频里一带而过,二重指针的用法,找到了篇帖子
http://blog.csdn.net/sdfgh20 ...

如果看到这个帖子第一个回复,那我就直接给分了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-3 08:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表