社区
数据结构与算法
帖子详情
关于二叉树 层序遍历和树状输出 的问题
Naruto
2011-06-08 06:27:56
小弟刚学数据结构,学到了二叉树。
有两个问题搞不清楚:
1、怎么把二叉树按层输出,比如输出为:
A
BC
DEG
就这样一层一层的输出,至少知道每层有几个元素。
2、怎么树状输出二叉树,就是屏幕上竖着按二叉树树状输出。
...全文
877
5
打赏
收藏
关于二叉树 层序遍历和树状输出 的问题
小弟刚学数据结构,学到了二叉树。 有两个问题搞不清楚: 1、怎么把二叉树按层输出,比如输出为: A BC DEG 就这样一层一层的输出,至少知道每层有几个元素。 2、怎么树状输出二叉树,就是屏幕上竖着按二叉树树状输出。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
层序遍历
不仅能够遍历树中的所有节点,而且能够很自然地按层次
输出
节点值,因此它在树的层次结构分析、树的宽度计算以及打印多层结构的树形图等方面有着广泛的应用。 在实际编程中,
层序遍历
的实现可能会涉及不同的...
二叉树
的括号表示法,
二叉树
的遍历,
二叉树
的树形打印
输出
(C++)
根据括号表达式构造
二叉树
,对
二叉树
进行前序,中序,后序,
层序遍历
,并用树形方式打印
输出
,有详细注释,供C++数据结构课程学习与交流使用。
LeetCode103.
二叉树
的锯齿形
层序遍历
二叉树
的锯齿形
层序遍历
是一种深度优先搜索算法的变种,这种遍历方式要求按照树的层次结构,依次处理每个节点,但在每一层中,节点的访问顺序需要交替变化。具体来说,在偶数层(根节点所在层为第一层)按照从左到右...
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章