C语言打印二叉树

19 篇文章 0 订阅
16 篇文章 0 订阅

由于代码很多,所以分开几篇介绍了,看不懂的可以看上一篇,本篇加入了树枝,看起来更直观,不过加这个树枝,算那个横线和空格花了我不少时间,不过最后能写出来,挺爽。

上一篇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 15
insert :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

 
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
下面是使用C语言创建并打印二叉树的示例代码: ```c #include <stdio.h> #include <stdlib.h> // 定义二叉树结点结构体 struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right; }; // 创建新结点 struct TreeNode* createNode(int data) { struct TreeNode* newNode = (struct TreeNode*) malloc(sizeof(struct TreeNode)); newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } // 向二叉树中插入新结点 struct TreeNode* insert(struct TreeNode* root, int data) { // 如果根结点为空,创建新结点作为根结点 if (root == NULL) { return createNode(data); } // 如果插入的数据小于等于根结点的数据,插入到左子树 if (data <= root->data) { root->left = insert(root->left, data); } // 如果插入的数据大于根结点的数据,插入到右子树 else { root->right = insert(root->right, data); } return root; } // 打印二叉树 void printTree(struct TreeNode* root) { if (root == NULL) { return; } // 打印左子树 printTree(root->left); // 打印当前结点 printf("%d ", root->data); // 打印右子树 printTree(root->right); } int main() { struct TreeNode* root = NULL; // 向二叉树中插入数据 root = insert(root, 6); insert(root, 4); insert(root, 2); insert(root, 5); insert(root, 9); insert(root, 7); insert(root, 10); // 打印二叉树 printTree(root); return 0; } ``` 运行结果: ``` 2 4 5 6 7 9 10 ``` 该示例代码创建了一个二叉树,插入了7个数据,并打印出了二叉树的结点数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值