由于代码很多,所以分开几篇介绍了,看不懂的可以看上一篇,本篇加入了树枝,看起来更直观,不过加这个树枝,算那个横线和空格花了我不少时间,不过最后能写出来,挺爽。
上一篇http://blog.csdn.net/xzongyuan/article/details/21945749
C语言打印二叉树
在广度遍历的时候,有非常繁杂的计算符号的方法,要看懂可能得花时间。
(1)整个设计的难点在sprintf函数运用。
sprintf(buf,"%*s",5,"|")里面的%*s表示填充*个符号,个数和符号分别在字符串后面表示。
sprintf(buf,"%*.s",5,"|")里面的%*s表示截取*个符号,个数和符号分别在字符串后面表示。这里要注意,如果你给的符号的size小于截取的个数*,会内存溢出。我一开始就是没区分这个,搞了很久。
很多地方我都用了*.s这种形式,这是为啥我要单独声明一些很长的字符串的原因,如“ ”,“|||||||||||||”,这是了给它截取用的。当然,可以不用声明这么长,我只是想着以后可能会扩展这个程序,所以就定义长了。
(2)要注意字符指针的初始化,很容易发生段错误
参考段错误解决办法:http://blog.csdn.net/xzongyuan/article/details/22046591
insert node to queue
root is 15insert :57
insert :80
insert :76
insert :12
insert :0
insert :68
insert :51
insert :22
insert :97
insert :19
insert :48
insert :53
creat tree succuess!Tree heigh is:5
_______________________
breath begin,enter root:
由于CSDN的字符大小和终端的不一样,所以用图片展示效果。这是一个编好的程序,可以直接gcc编译,然后运行
代码地址:http://download.csdn.net/detail/xzongyuan/7097013
为了可重用,我把它重构了,代码地址:http://download.csdn.net/detail/xzongyuan/7101527