/*按层次遍历二叉树*经调试可运行源码及分析如下:
***/
#include <stdlib.h>
#include <iostream>
#include <queue>using std::cout;
using std::cin;
using std::endl;
using std::queue;/*二叉树结点定义*/
typedef struct BTreeNode
{char elem;struct BTreeNode *pleft;struct BTreeNode *pright;
}BTreeNode;/*
按层次遍历二叉树步骤:
第一步:借助队列,首先将根节点proot入队;
第二步:当队列不空时,获得队首元素并出队,赋给proot,执行第三步;
第三步:如果proot左节点存在,则入队;如果proot右节点存在,则入队;执行第二步。
*//*按层次遍历二叉树*/
void level_traverse(BTreeNode* proot)
{if (proot == NULL)return;queue <BTreeNode*> que;que.push(proot);while (!que.empty()){proot = que.front();que.pop();cout << "遍历节点:" << proot->elem << endl;if (proot->pleft != NULL){que.push(proot->pleft);//左孩子入队}if (proot->pright != NULL){que.push(proot->pright);//右孩子入队}}
}/*初始化二叉树根节点*/
BTreeNode* btree_init(BTreeNode* &bt)
{bt = NULL;return bt;
}/*先序创建二叉树*/
void pre_crt_tree(BTreeNode* &bt)
{char ch;cin >> ch;if (ch == '#'){bt = NULL;}else{bt = new BTreeNode;bt->elem = ch;pre_crt_tree(bt->pleft);pre_crt_tree(bt->pright);}
}int main()
{int tree_node_number = 0;BTreeNode *bt;btree_init(bt);//初始化根节点pre_crt_tree(bt);//创建二叉树level_traverse(bt);//递归system("pause");return 0;
}/*
运行结果:
a b c # # # d e # # #---以上为输入---
---以下为输出---遍历节点:a
遍历节点:b
遍历节点:d
遍历节点:c
遍历节点:e
请按任意键继续. . .本例创建的二叉树形状:ab       d
c        e
参考资料:
http://blog.csdn.net/beitiandijun/article/details/41940417
http://yuncode.net/code/c_505ea04f8f6186
*/

二叉树层次遍历(借助队列实现)相关推荐

  1. 二叉树层次遍历:队列

    二叉树层次遍历 二叉树层次遍历的基本算法在本文中不提及.本文内容为,在二叉树层次遍历中,为何选用队列这样一种数据结构. 不使用额外数据结构 首先,假设我们不使用额外的数据结构,只使用 1 个指针: 访 ...

  2. [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)

    目录: 1.Binary Tree Level Order Traversal - 二叉树层次遍历 BFS 2.Binary Tree Level Order Traversal II - 二叉树层次 ...

  3. 数据结构-二叉树层次遍历

    首先介绍下二叉树的层次遍历即按照顺序对树节点依次访问,如下图: 顺序遍历的结果为:ABCDEFGHIJK 我们可以借助一个队列来实现二叉树的层次遍历:思路如下: 先将二叉树根节点入队,然后出队,访问该 ...

  4. 树(二叉树层次遍历输出及二叉树前序遍历输入)

    前两篇解释了二叉树的有关逻辑概念及前中后序输出递归代码的实现,这篇将讲述二叉树层次遍历输出如何实现以及二叉树前序遍历输入的两种情况. 定义结构体 struct BiNode{char data;BiN ...

  5. (数据结构)二叉树层次遍历

    二叉树层次遍历 二叉树层次遍历的实现思想是:通过队列数据结构,从树的根结点开始,依次将其左孩子和右孩子入队:而后每次队列中一个结点出队,都将其左孩子和右孩子入队,直到树中所有结点都出队,出队结点的先后 ...

  6. 二叉树层次遍历--广度遍历和深度遍历

    问题来源:二叉树层次遍历 问题描述:给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例子: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 ...

  7. 由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)

    下面三种序列可以唯一的构造唯一的一棵二叉树: 前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 #include<stdio.h> #inc ...

  8. 用队列实现二叉树层次遍历

    在二叉树的基础上,层次遍历时采用队列读取 核心代码 void levorder(BitTNode* t) {     BiTree Queue[100],p; //创建队列     int front ...

  9. 二叉树的层次遍历_【腾讯面试热身题】二叉树层次遍历(动画展示)

    二叉树的层次遍历同时涉及到树和队列两种数据结构的操作,因此大厂很喜欢用来作为面试的热身题.作者不少去腾讯的小伙伴,都反映,这种题一定要非常熟练,不然会被直接pass. 1 题目描述 给定一个二叉树,按 ...

最新文章

  1. 【青少年编程】【四级】绘图程序优化
  2. 用局部条件图集建模三维曲面流形
  3. 51nod 最长公共子序列测试 【LCS+回溯】
  4. Machine Learning | (9) 回归算法-线性回归
  5. phpDocument(PHPDoc) 标签大全
  6. 第六周项目二-带武器的游戏角色
  7. Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务
  8. APIO2010 特别行动队 斜率优化DP算法笔记
  9. 【计算机科学基础】计算机概述
  10. (组合数学笔记)Pólya计数理论_Part.3_置换群及其性质
  11. Web - JSON基础讲解
  12. leaflet+vue:色斑图的实现大体步骤
  13. XAMPP汉化教程指南
  14. PR(Premiere)安装插件Aescripts BeatEdit(Beat Edit)后无法打开的解决方案
  15. HTML径向效果,HTML5版径向渐变梯度色彩
  16. @程序员,请掌握这些核心生存技能
  17. 项目管理软件售后培训方案
  18. Json 实现数据添加/更新 的页面效果
  19. 微积分在金融投资的应用
  20. camera申请buf流程

热门文章

  1. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G 旋转矩阵(模拟)
  2. 戴尔台式计算机型号怎么查,戴尔台式电脑型号的查询方法
  3. 人工智能的主要应用领域
  4. SpeedPan百度云不限速下载
  5. 专家推荐面渣逆袭:JVM经典五十问,这下面试稳了
  6. win10设置pg/pc接口_win10安装postgresql
  7. 敏感词工具(sensitive word)的使用
  8. iOS开发中设置UITableView每组头试图与第一行cell之间的分割线
  9. 完美世界手游服务器维护中,完美世界手游黑屏闪退解决办法 玩不了怎么办
  10. 备赛全国阳光健身健美大赛训练记录(粗略)