数据结构(五)层次遍历

// linear_listqueue.cpp : This file contains the 'main' function. Program execution begins and ends there.
//#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#define ElemType BiTree
using namespace std;
typedef struct BiTNode
{char data;struct BiTNode* lchild, * rchild;
}BitTNode, * BiTree;
typedef struct  linknode //链式节点
{ElemType data;struct linknode* next;}LinkNode;//链式队列
typedef struct
{LinkNode* front, *rear;}LinkQueue;void InitQueue(LinkQueue &Q)
{//带头节点的队列初始化Q.rear=Q.front=(LinkNode*)malloc(sizeof(LinkNode));Q.front->next = NULL;
}bool IsEmpty(LinkQueue& Q)
{if (Q.rear == Q.front){return true;}return false;}void EnQueue(LinkQueue& Q, ElemType x)
{LinkNode* s= (LinkNode*)malloc(sizeof(LinkNode));s->data = x;s->next = Q.rear->next;Q.rear->next = s;Q.rear = s;}bool DeQueue(LinkQueue& Q, ElemType &x)
{if (IsEmpty(Q)){//队列为空return false;}LinkNode* p = Q.front->next;x = p->data;Q.front->next = p->next;if (p == Q.rear)  //要删除的为尾队列{Q.rear = Q.front;}free(p);return true;
}//层次遍历
void LevelOrder(BiTree T)
{LinkQueue q;BiTNode* p;//初始化队列InitQueue(q);EnQueue(q,T);  //将根节点入队while (!IsEmpty(q)){DeQueue(q,p);printf("%c\t",p->data);if (p->lchild != NULL){EnQueue(q,p->lchild);}if (p->rchild != NULL){EnQueue(q, p->rchild);}}}
bool createBiTree(BiTree& T)
{char ch;cin >> ch;if (ch == '.'){T = NULL; //如果输入 '.' , 该树空结点}else{T = (BitTNode*)malloc(sizeof(BitTNode));if (T == NULL){printf("tree error!\n");exit(1);}T->data = ch;createBiTree(T->lchild);createBiTree(T->rchild);}return true;
}int main()
{//int x;//LinkQueue Q;//InitQueue(Q);//EnQueue(Q, 5);//EnQueue(Q, 7);//EnQueue(Q, 9);//DeQueue(Q, x);//LinkNode* p = Q.front->next;//while (p != NULL)//{//    printf("%d\n",p->data);//    p = p->next;//}BiTree T;createBiTree(T);LevelOrder(T);}// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu// Tips for Getting Started:
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file

测试要完成如图

数据结构(五)层次遍历相关推荐

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

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

  2. 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度

    一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...

  3. sdut 2137 数据结构实验之求二叉树后序遍历和层次遍历

    数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descr ...

  4. 数据结构实验之求二叉树后序遍历和层次遍历

    数据结构实验之求二叉树后序遍历和层次遍历 Description 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历和层序遍历. Input 输入数据有多组,第一行是一个整数t (t<100 ...

  5. 数据结构——二叉树的层次遍历进阶

    之前的一个博客 数据结构--二叉树的层次遍历看完这个,可以简单实现下面的问题 问题: 1.计算二叉树的最大宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值. 2.用按层次顺序遍历二叉树的方法, ...

  6. 数据结构之 二叉树---求二叉树后序遍历和层次遍历(先建树,再遍历)

    数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历. 输入 输入 ...

  7. 数据结构 | 第十一章:二叉树和其他树 | 【前序遍历】【中序遍历】【后序遍历】【层次遍历】 | 并查集

    第5-10章:线性结构,元素之间存在线性次序(线性表.数组与矩阵.栈.队列.跳表和散列表 第11-15章:层次结构(二叉树和树.优先队列.竞赛树.搜索树) 文章目录 11.1 树 11.2 二叉树 1 ...

  8. C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历)

    C语言数据结构之二叉树的层次建树及遍历方法(前序,中序,后序,层次遍历) tips:前些天学习了C语言数据结构链表,栈,队列.今天来学习一下C语言数据结构之二叉树的各种操作. 注意:二叉树的层次建树是 ...

  9. 数据结构-二叉树[递归实现](构造,析构,先序遍历,中序遍历,后续遍历,层次遍历)

    数据结构-二叉树[递归实现] 一.二叉树概念 1.定义 二叉树(Binary Tree)是n(n不小于0)个节点组成的有限集合,且满足以下条件之一 (1)n=0时,为空二叉树(无节点) (2)n> ...

最新文章

  1. TVM cmake示例展示
  2. 实现自己的连接池(一)
  3. malloc 初始化_你真的了解 NSObject 对象的初始化吗?
  4. SqlServer在安装时提示:需要Microsoft.NET Framework 3.5 Service Pack 1 规则失败
  5. eclipse 对齐行号在括号中显示和字体调整
  6. 某计算机公司的库存管理,《管理系统中计算机应用》应用题数据流程图汇总题及参考答案...
  7. C++ 重载函数调用运算符 | 再探lambda,函数对象,可调用对象
  8. 『教程』笔记本win7下自建Wifi热点–便于手机Wifi上网 (转 )
  9. c语言函数操作一维数组
  10. quartus ii 管脚映射
  11. MangoDB的基本操作
  12. linux使用触摸屏驱动程序,Linux触摸屏驱动
  13. 高速下载百度网盘资料(Tampermonkey+百度网盘直链下载助手+xdown)
  14. 如何维持手机电池寿命_手机电池寿命是多久? 如何延长手机电池寿命?
  15. 技术人如何自我成长?
  16. GB2312和BIG5,Unicode/UTF8等编码之间的互相转化
  17. java 获取操作系统的参数_JAVA获取系统变量
  18. 【机械革命】蛟龙17X笔记本的使用笔记
  19. cocos2d-x动画加速与减速
  20. FFmpeg编译支持AV1编解码器libaom-av1

热门文章

  1. How to fix the bug “Expected required, optional, or repeated.”?
  2. 怎么解决tomcat占用8080端口问题
  3. 开窍小老虎,一步一个脚印之 初识汇编(一)
  4. 小试---EF5.0入门实例1
  5. 移动端实现元素拖拽效果插件_基于自然流布局的可视化拖拽搭建平台设计方案...
  6. 海洋主题绘画_深圳举办风帆时代海洋绘画作品展,展出作品600余件
  7. 西门子scl语言编程手册_西门子SCL编程PEEK指令讲解
  8. Python连接MySQL及一系列相关操作
  9. C---编写程序:求出1~1000之间能被7或12整除,但不能同时被二者整除的所有整数,将结果保存在数组中,要求程序数据的输入、计算和输出均使用函数实现。
  10. linux yum命令作用,YUM命令使用示例