在这解道问题前先学习一下什么是二叉树的序遍历。

二叉树的序遍历分为前序遍历中序遍历后序遍历

前序遍历:
前序遍历(DLR)是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右,即其遍历先从根节点开始,再依次遍历左右子节点。

中序遍历:

中序遍历(LDR)是二叉树遍历的一种,也叫做中根遍历、中序周游,可记做左根右,即其遍历从左子节点开始,再依次遍历根节点和右子节点。

后序遍历:

后序遍历(LRD)是二叉树遍历的一种,也叫做后根遍历、后序周游,可记做左右根,即其遍历从左子节点开始,再依次遍历右子节点和根节点。

e.g.

上图的前序遍历结果为:

ABDECF

中序遍历结果为:

DBEAFC

后序遍历结果为:

DEBFCA

题目描述 Description

求一棵二叉树的前序遍历,中序遍历和后序遍历

输入描述 Input Description

第一行一个整数n,表示这棵树的节点个数。

接下来n行每行2个整数L和R。第i行的两个整数Li和Ri代表编号为i的节点的左儿子编号和右儿子编号。

输出描述 Output Description

输出一共三行,分别为前序遍历,中序遍历和后序遍历。编号之间用空格隔开。

样例输入 Sample Input

5

2 3

4 5

0 0

0 0

0 0

样例输出 Sample Output

1 2 4 5 3

4 2 5 1 3

4 5 2 3 1

数据范围及提示 Data Size & Hint

n <= 16

根据不同的遍历方法设计三种递归

AC代码:

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4
 5 int x[100000],y[100000];
 6
 7 void q(int n){
 8     if(n){
 9         cout<<n<<" ";
10         q(x[n]);
11         q(y[n]);
12     }
13 }
14
15 void z(int n){
16     if(n){
17         z(x[n]);
18         cout<<n<<" ";
19         z(y[n]);
20     }
21 }
22
23 void h(int n){
24     if(n){
25         h(x[n]);
26         h(y[n]);
27         cout<<n<<" ";
28     }
29 }
30
31 int main(){
32     int n;
33     cin>>n;
34     memset(x,0,sizeof(x));
35     memset(y,0,sizeof(y));
36     for(int i=1;i<=n;i++){
37         cin>>x[i]>>y[i];
38     }
39     q(1);
40     cout<<endl;
41     z(1);
42     cout<<endl;
43     h(1);
44     cout<<endl;
45     return 0;
46 } 

转载于:https://www.cnblogs.com/Kiven5197/p/5665581.html

3143 二叉树的序遍历相关推荐

  1. codevs3143 二叉树的序遍历

    难度等级:白银 3143 二叉树的序遍历 题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点 ...

  2. 后序遍历的非递归算法python_二叉树后序遍历(递归与非递归)算法C语言实现...

    二叉树后序遍历的实现思想是:从根节点出发,依次遍历各节点的左右子树,直到当前节点左右子树遍历完成后,才访问该节点元素. 图 1 二叉树 如图 1 中,对此二叉树进行后序遍历的操作过程为: 从根节点 1 ...

  3. leetcode算法题--二叉树中序遍历迭代法

    原题链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/ 二叉树中序遍历迭代法,栈实现 vector<int> ...

  4. js实现创建二叉树+先序遍历

    二叉树概念 1.除了最下面一层,每个节点都是父节点,每个节点都有且最多有两个子节点: 2.除了嘴上面一层,每个节点是子节点,每个节点都会有一个父节点: 3.最上面一层的节点为根节点: 图例说明: 先序 ...

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

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

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

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

  7. 二叉树先序遍历递归算法(图解)

    前言 二叉树的遍历 是树结构插入.删除.修改.查找和排序运算的前提, 是二叉树一切运算的基础和核心. 二叉树的遍历分为先序.中序.后序遍历, 通过递归实现时, 三者的区别不大, 连代码都不需要修改, ...

  8. C++ morris inorder二叉树中序遍历(附完整源码)

    C++ morris inorder二叉树中序遍历 morris inorder二叉树中序遍历算法的完整源码(定义,实现,main函数测试) morris inorder二叉树中序遍历算法的完整源码( ...

  9. 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为

    初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:() 8 3 2 5 1 6 4 7 3 2 8 5 1 4 6 7 3 8 2 5 ...

最新文章

  1. EOS入门指南PART6——别忙着开发,先来看看智能合约数据是怎么存的
  2. Python入门100题 | 第070题
  3. SpringMVC 全局异常处理的简单应用
  4. Java键盘录入 Scanner
  5. 数据科学 IPython 笔记本 8.5 简单的散点图
  6. Python花式编程:6种方法计算1!+2!+...+n!
  7. 管理感悟:公司内斗,肯定是闲着的斗干活的
  8. react代码编辑器 react-ace
  9. Android开发初体验——创建一个简单的APP
  10. [BUGKU] [PWN] PWN5
  11. SEO优化方案及SEO操作流程-邹川
  12. linux中system函数
  13. PDFBox打印PDF A4格式文档和定制规格条码实例
  14. oracle第五章多表连接习题答案(理解+剖析)
  15. Java统计数组中各个数字出现的个数和字符串中各个字符出现的个数
  16. 梳子刻字刻什么好_校园石阶上被刻了1700多个汉字,这次网友却说好
  17. 商用设计素材库,设计师必备。
  18. 用列主元高斯(Gauss)消元法求n阶线性方程组的解(python)
  19. 数据预处理Part9——数据降维
  20. Python-就业方向

热门文章

  1. python编程入门与实践_Python编程入门到实践(二)
  2. java arraylist实现_java实现ArrayList基本功能
  3. 高德地图 街道范围_高德地图发布交通“评诊治”系统:针对各类交通拥堵场景“因地制宜”...
  4. python css selector_Python爬虫之Selector的用法
  5. html js css如何关联_html+css +js 选项卡
  6. 哪个网站是计算机知识的,电脑知识网站
  7. XStream生成的XML中带class属性,去掉class属性
  8. 【maven】修改编译得到的文件名
  9. linux java程序启动脚本
  10. linux 检测远程端口是否打开---nmap命令