在做一些算法题时,我会经常用到VS2017去测试,每次去找一个合适的二叉树觉得很麻烦,今天就自己写了一个放在博客上,下次就直接复制了

包含二叉树的建立,以及二叉树的前序遍历、中序遍历、后序遍历和层序遍历

main.c

#include <iostream>
#include <vector>
#include <string>
#include <queue>
using namespace std;class Node {public:float data; // 节点数据Node * leftChiled = nullptr;  // 左孩子Node * rightChiled = nullptr; // 右孩子Node(float data) :data(data) {}; 构造函数
};//先序遍历
void preOrder(Node & node) {cout << node.data << " ";if (node.leftChiled != nullptr) {preOrder(*(node.leftChiled));}if (node.rightChiled != nullptr) {preOrder(*(node.rightChiled));}
}void midOrder(Node & node) {if (node.leftChiled != nullptr) {midOrder(*(node.leftChiled));}cout << node.data << " ";if (node.rightChiled != nullptr) {midOrder(*(node.rightChiled));}
}void postOrder(Node & node) {if (node.leftChiled != nullptr) {postOrder(*(node.leftChiled));}if (node.rightChiled != nullptr) {postOrder(*(node.rightChiled));}cout << node.data << " ";
}//层序遍历
vector<vector<int>> levelOrder(Node* root) {if (root == nullptr) return {};vector<vector<int>> ans;//利用q.size() 来保证当前层的元素的数目queue<Node*> q;q.push(root);while (!q.empty()) {int qSize = q.size();ans.emplace_back(vector<int>());//先将ans插入一个空数组for (int i = 0; i < qSize; i++) {Node* temp = q.front();q.pop();ans.back().emplace_back(temp->data);//ans.back()就是刚才哪个空数组if (temp->leftChiled) q.push(temp->leftChiled);if (temp->rightChiled) q.push(temp->rightChiled);}}return ans;
}int main() {//所生成的二叉树/**                   6(root)*          5(one)            7(two)*   0(three)  2(four)           9(five)*///创建二叉树的根及若干节点Node root(6);Node one(5);Node two(7);Node three(0);Node four(2);Node five(9);//拼接节点root.leftChiled = &one;root.rightChiled = &two;one.leftChiled = &three;one.rightChiled = &four;two.rightChiled = &five;//先序遍历cout << "先序遍历结果:" << endl;preOrder(root);cout << endl;cout << endl;//中序遍历cout << "中序遍历结果:" << endl;midOrder(root);cout << endl;cout << endl;//后序遍历cout << "后序遍历结果:" << endl;postOrder(root);cout << endl;cout << endl;//层序遍历cout << "层序遍历结果:" << endl;vector<vector<int>> ans=levelOrder(&root);for(int i=0;i<ans.size();i++){for (auto data : ans[i])cout << data<<" ";cout << endl;}}

结果显示

二叉树的建立与遍历(先中后层序)相关推荐

  1. 二叉树的相关性质及其前中后层序遍历实现

    写在前面: 本文前面部分介绍相关概念,后面部分是程序. 点击下面链接查看更多! 点击此处发现更多 一.二叉树的概念 1.1 相关术语 ①结点:包含一个数据元素及若干指向子树分支的信息 . ②结点的度: ...

  2. 二叉树:通过前序遍历与中序遍历序列输出二叉树的后序遍历序列

    题目描述: 二叉树的前序.中序.后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树: 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树: 后序遍历: ...

  3. 根据二叉树的先序遍历和中序遍历建立二叉树

    根据二叉树的先序遍历和中序遍历建立二叉树 rebacktree 根据二叉树的先序遍历和中序遍历建立二叉树. rebacktree1 根据二叉树的后序序遍历和中序遍历建立二叉树. #include &q ...

  4. 数据结构与算法之二叉树的先序遍历,中序遍历,后序遍历

    数据结构与算法之二叉树的先序遍历,中序遍历,后移遍历 目录 实现二叉树的先序,中序,后序遍历,包括递归方式和非递归方式 在二叉树中找到一个节点的后继节点 1. 实现二叉树的先序,中序,后序遍历,包括递 ...

  5. 小朋友学数据结构(3):二叉树的建立和遍历

    小朋友学数据结构(3):二叉树的建立和遍历 一.基本概念 BinaryTree.png 二叉树:每个结点的子结点个数不大于2的树,叫做二叉树. 根结点:最顶部的那个结点叫做根结点,根结点是所有子结点的 ...

  6. C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...

    二叉树的建立与遍历实验报告(c语言编写,附源代码).doc 第 1 页,共 9 页二叉树的建立与遍历实验报告级 班 年 月 日 姓名 学号_ 1实验题目建立一棵二叉树,并对其进行遍历(先序.中序.后序 ...

  7. 二叉树的遍历实验报告C语言,二叉树的建立与遍历实验报告(c语言编写,附源代码)...

    程序用VC编写,实现建立一棵二叉树的功能,并对其进行遍历(先序.中序.后序),并且打印输出遍历结果. 二叉树的建立与遍历实验报告 级 班 年 月 日 姓名 学号_ 1.实验题目 建立一棵二叉树,并对其 ...

  8. 数据结构——二叉树的建立与遍历算法(实验报告)

    实验名称:二叉树的建立与遍历算法          指导教师: 实验日期:2022年月日 实验地点: 成绩: 实验目的: 1.掌握二叉树的定义. 2.二叉树的链式存储结构及在链式存储结构中三种遍历(前 ...

  9. 二叉树 的建立及遍历 过程

    我知道二叉树有先序遍历,中序遍历,后续遍历等等,不过这里说的的是输入一些点(11,LL) (7,LLL) (8,R) (5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ...

最新文章

  1. 导致用户体验差造成网站跳出率过高的原因有哪些?
  2. centos python 安装
  3. R 语言开发环境搭建
  4. Netty 简单样例分析(io传输的框架)
  5. 如何突破科研瓶颈?如何与导师自在相处?微软研究员们的读博心得
  6. JAVA多线程之synchronized和volatile实例讲解
  7. talib函数功能一览表
  8. 应届生求职应聘简历PPT模板
  9. SQL*Loader-704: 内部错误: ulconnect: OCIServerAttach [0] SQL*Loader-704: Internal error ulconnect: OCI
  10. 计算机网络安全叙述,计算机网络安全涉及
  11. js压缩图片--可以控制分辨率以及压缩后的图片质量
  12. netstat命令不可用,安装net-tools
  13. win10中安装JDK8以及环境配置
  14. 学习笔记_OSI模型
  15. Unable to render this definition
  16. flutter开发欠揍♎
  17. 一站式数智分析平台datasea
  18. 【Linux】概述(Unix和Linux的关系)
  19. 有关细粒度图像分析(Fine-Grained Image Analysis)
  20. 10 款开源的在线游戏,点开就能玩的那种

热门文章

  1. 多线程《一》线程理论
  2. get与post请求问题
  3. 2018-07-17-Python全栈开发day28-描述符应用与类的装饰器-part1
  4. Vue的数据双向绑定和Object.defineProperty()
  5. 我仅仅想安安静静的做一个编程的美男子
  6. Oracle 数据表的管理
  7. tomcat服务器访问网址组成
  8. 边工作边刷题:70天一遍leetcode: day 3
  9. PHP CLI模式开发
  10. 《京东618实践:一元抢宝系统的数据库架构优化》阅读笔记