码迷,mamicode.com
首页 > 其他好文 > 详细

递归创建二叉树遇到的一个bug

时间:2015-09-01 12:11:21      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

今天上午在(先序)递归创建二叉树时遇到了一个bug,以下是程序部分:

(关于递归创建二叉树这位前辈讲的很清楚,http://blog.csdn.net/stpeace/article/details/8138303)

 1 void PreTraverse(PBiNode T)
 2 {
 3     if(!T)
 4         return;
 5     printf("%c", T->data);
 6     PreTraverse(T->leftch);
 7     PreTraverse(T->rightch);
 8 }
 9 void CreateBiTree(PBiNode &root)
10 {
11     char c;
12     scanf("%c", &c);
13     if(# == c)
14         root = NULL;
15     else 
16     {
17         root = (PBiNode)malloc(sizeof(PBiNode));
18         root->data = c;
19         CreateBiTree(root->leftch);
20         CreateBiTree(root->rightch);
21     }
22 }
23 int main(void)
24 {
25     PBiNode root;
26 
27     CreateBiTree(root);
28     printf("PreOrderTra: ");
29     PreTraverse(root);
30     return 0;
31 }

 

  程序运行后一直没有输出前序遍历信息(确定前序遍历程序正确),起初以为是补充“#”(当作叶子节点)后没有按先序顺序输入,然后就输入了一个简单的“A##",程序仍然不能执行,百思不得其解。bug本身很简单,因为粗心导致的,不知道你有没有看出来?

  待到回头看到CreateBiTree函数体时,才恍然大悟,原来是else下面的那句malloc出错了,本应该为一个树节点开辟空间,却写成了为一个树节点指针(PBiNode)开辟空间了。实属粗心,谨记。

递归创建二叉树遇到的一个bug

标签:

原文地址:http://www.cnblogs.com/iloveprogramming/p/4775112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!