数据结构:树的BFS,树的层次遍历! 按先序遍历创建一棵树,然后以层次遍历输出。

来源:互联网 发布:程序员游戏 编辑:程序博客网 时间:2024/05/16 16:23

按先序遍历创建一棵树,以层次遍历输出

样例输入

A B # D # # C E # # F # #

样例输出

LevelOrder: A B C D E F

 

 

相当于广度优先搜索,使用队列实现。队列初始化,将根节点压入队列。当队列不为空,进行如下操作:弹出一个节点,访问,若左子节点或右子节点不为空,将其压入队列。


代码:

#include <iostream>#include <queue>using namespace std;struct node {              //表示一个树上的节点char ch;node *left, *right;};node* creat() {               //以递归的方式构造一棵二叉树node *root = new node;char c;cin >> c;if(c == '#')  root = NULL;else {root->ch = c;root->left = creat();root->right = creat();}return root;        //返回这棵树的根节点}int main() {node *root = creat();queue<node*> q;if(root) q.push(root);cout << "LevelOrder:";while(!q.empty()) {        //用BFS的方法,层次遍历输出该二叉树cout << " " << q.front()->ch;if(q.front()->left)  q.push(q.front()->left);   //把当前节点左子树的根节点加入队列前,必须先检验当前节点是否具有左子树!!!if(q.front()->right)  q.push(q.front()->right); //把当前节点右子树的根节点加入队列前,必须先检验当前节点是否具有右子树!!!q.pop();  //处理完当前节点以后,就可以把它从队列中剔除了!}cout << endl;return 0;}


 

 

 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 立式注塑机产品粘膜怎么办 被小松鼠咬了怎么办 被宠物松鼠咬了怎么办 手被松鼠咬出血怎么办 银联认证码失败怎么办 国际汇款触发合规查询怎么办 外面的网线断了怎么办 网线被别的车挂断了怎么办 施工挖断军用光缆怎么办 不小心挖断光缆怎么办 家里的光纤断了怎么办 车被树枝刮花了怎么办 货车撞断了树枝怎么办? 把光缆挖断了怎么办 光缆有外伤断了怎么办 不小心挖断移动光缆怎么办 派克服内胆掉毛怎么办 汉王电纸书怎么无法开机怎么办? 压力喷水壶坏了怎么办 行车记录仪后摄像头不清楚怎么办 蓝牙听歌声音小怎么办 对讲机时灵时不灵怎么办 黑凉粉煮稀了怎么办 轮速传感器坏了怎么办 黑魂3被入侵了怎么办 轮胎螺丝滑牙了怎么办 gta5ol寻宝任务退出了怎么办 gta5线上模式买房子之后怎么办 开摩托车忘记带安全头盔怎么办 gta不想要车了怎么办 空气滤芯进水会怎么办 车胎扎了个钉子怎么办 德罗索没导弹了怎么办 CF手雷包不能用怎么办 cfAK爆头碰到狙怎么办 玩cf网络延迟高怎么办 逆水寒装备分解错了怎么办 轴与孔间隙过大怎么办 小孩眼睛被打了怎么办 玩王者荣耀手机屏幕竖着怎么办 棉被被老鼠尿湿怎么办