社区
数据结构与算法
帖子详情
关于二叉树 层序遍历和树状输出 的问题
Naruto
2011-06-08 06:27:56
小弟刚学数据结构,学到了二叉树。
有两个问题搞不清楚:
1、怎么把二叉树按层输出,比如输出为:
A
BC
DEG
就这样一层一层的输出,至少知道每层有几个元素。
2、怎么树状输出二叉树,就是屏幕上竖着按二叉树树状输出。
...全文
850
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.后序...
二叉树
的括号表示法,
二叉树
的遍历,
二叉树
的树形打印
输出
(C++)
根据括号表达式构造
二叉树
,对
二叉树
进行前序,中序,后序,
层序遍历
,并用树形方式打印
输出
,有详细注释,供C++数据结构课程学习与交流使用。
算法入门教程——
二叉树
循序渐进的讲解
二叉树
的相关知识。其中包括二叉搜索树的插入、删除与查询、
二叉树
的遍历、求一颗
二叉树
的高度等重要且经典的知识。
数据结构——
二叉树
有关操作程序
一)建立
二叉树
+判空+遍历 (1)以二叉链表作为存储结构,从键盘以先序次序输入各个结点(空格字符表示空树)建立一棵
二叉树
; (2)对(1)中生成的
二叉树
进行判空; (3)对(1)中生成的
二叉树
进行遍历(分别实现...
LeetCode解题总结
5.1.2
二叉树
的
层序遍历
5.1.3 恢复
二叉树
[hard] 5.1.4 判断两棵树是否相等 5.1.5 判断
二叉树
是否为AVL树 5.1.6 将
二叉树
转为链表 5.1.7
二叉树
添加指向右边节点的指针 5.1.8 树中节点的最小公共祖先 5.2
二叉树
的...
数据结构与算法
33,010
社区成员
35,327
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章