社区
数据结构与算法
帖子详情
关于二叉树 层序遍历和树状输出 的问题
Naruto
2011-06-08 06:27:56
小弟刚学数据结构,学到了二叉树。
有两个问题搞不清楚:
1、怎么把二叉树按层输出,比如输出为:
A
BC
DEG
就这样一层一层的输出,至少知道每层有几个元素。
2、怎么树状输出二叉树,就是屏幕上竖着按二叉树树状输出。
...全文
895
5
打赏
收藏
关于二叉树 层序遍历和树状输出 的问题
小弟刚学数据结构,学到了二叉树。 有两个问题搞不清楚: 1、怎么把二叉树按层输出,比如输出为: A BC DEG 就这样一层一层的输出,至少知道每层有几个元素。 2、怎么树状输出二叉树,就是屏幕上竖着按二叉树树状输出。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nuptxxp
2011-06-11
打赏
举报
回复
void LayerOrder(BiTree T)//层序遍历二叉树(进出队列元素都依赖于front)
{
if(T==NULL)
return;//
可以加上这一句就完美了
front=rear=0;
queue[++rear]=T;
while(front!=rear)
{
printf("%c",queue[++front]->data);
if(queue[front]->lchild) queue[++rear]=queue[front]->lchild;
if(queue[front]->rchild) queue[++rear]=queue[front]->rchild;
}
}
nuptxxp
2011-06-11
打赏
举报
回复
[Quote=引用 3 楼 kadingxiaodi 的回复:]
#include<stdio.h> //二叉树的层序遍历。
#include<stdlib.h>
typedef struct BiNode
{
char data;
BiNode *lchild,*rchild;
} *BiTree;
BiTree queue[100]; //队列当中存的是指向结构体的指针,而不是通常的整形或字符型的数据。
int front,rear;
……
[/Quote]
LS还有两个bug,
1.输入如果用scanf,会把回车读进去,应该用cin
2.没有考虑空树的情形,比如只输入#,这样会导致指针越界
Oo纳兰筱DoO
2011-06-08
打赏
举报
回复
#include<stdio.h> //二叉树的层序遍历。
#include<stdlib.h>
typedef struct BiNode
{
char data;
BiNode *lchild,*rchild;
} *BiTree;
BiTree queue[100]; //队列当中存的是指向结构体的指针,而不是通常的整形或字符型的数据。
int front,rear;
BiTree CreateTree() //建立二叉树
{
BiTree root;
char ch;
scanf("%c",&ch);
if(ch=='#') root=NULL;
else{
root=new BiNode;
root->data=ch;
root->lchild=CreateTree();
root->rchild=CreateTree();
}
return root;
}
void LayerOrder(BiTree T)//层序遍历二叉树(进出队列元素都依赖于front)
{
front=rear=0;
queue[++rear]=T;
while(front!=rear)
{
printf("%c",queue[++front]->data);
if(queue[front]->lchild) queue[++rear]=queue[front]->lchild;
if(queue[front]->rchild) queue[++rear]=queue[front]->rchild;
}
}
void main()
{
BiTree root;
root=CreateTree();
LayerOrder(root);
}
Naruto
2011-06-08
打赏
举报
回复
[Quote=引用楼主 zhangkaihang 的回复:]
小弟刚学数据结构,学到了二叉树。
有两个问题搞不清楚:
1、怎么把二叉树按层输出,比如输出为:
A
BC
DEG
就这样一层一层的输出,至少知道每层有几个元素。
2、怎么树状输出二叉树,就是屏幕上竖着按二叉树树状输出。
[/Quote]
恩恩,能贴上程序就好了!!!!
nuptxxp
2011-06-08
打赏
举报
回复
1.这属于层次遍历,可以使用一个队列,储存各节点,再按顺序输出
2.关于打印方面,主要是格式问题,你注意空格与那个斜线的输出位置就行(关于打印,本来思考能不能用递归,但没想出来)
二叉树
基本操作(
层序遍历
、树形
输出
)
2.树形
输出
3.广义表形
输出
4.判断是否为空树 5.求树的深度 6.插入孩子结点 7.删除孩子结点 8.取出根结点 9.取双亲结点 10.取左孩子结点 11.取右孩子结点 12.取左兄弟 13.取右兄弟 14.先序遍历 15.中序遍历 16.后序...
二叉树
层序遍历
详解[代码]
通过这些步骤,可以将一个
二叉树
的节点按照层次顺序
输出
,从而达到
层序遍历
的目的。 除了基础的遍历功能,文章还探讨了如何通过
层序遍历
判断
二叉树
的完整性。在某些情况下,我们需要验证一个
二叉树
是否是一个完全...
107
二叉树
的
层序遍历
II.zip
层序遍历
的这一特性使得它在处理树形结构的图形界面显示、路径
问题
以及与图论相结合的算法中非常有用。 在算法面试或数据结构与算法的课程中,
层序遍历
及其变体经常被作为考察点,因为它能够很好地考察面试者或学生...
完全
二叉树
的
层序遍历
[源码]
本文提供的源码示例,不仅演示了完全
二叉树
层序遍历
的实现,也为软件开发人员提供了一个可参考的代码包,通过这些代码,开发者可以更好地理解和掌握树的遍历算法,将其应用于实际
问题
的解决中。
102
二叉树
的
层序遍历
.zip
层序遍历
不仅能够遍历树中的所有节点,而且能够很自然地按层次
输出
节点值,因此它在树的层次结构分析、树的宽度计算以及打印多层结构的树形图等方面有着广泛的应用。 在实际编程中,
层序遍历
的实现可能会涉及不同的...
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章