题目描述

给出一个n个节点的二叉树,请求出二叉树的前序遍历,中序遍历和后序遍历。

输入

  第一位一个整数n(0<n<=26),表示二叉树有n个节点,以下n行,每行第一个为一个大写字母表示节点,后面为两整数,第一个表示左儿子序号,第二个表示右儿子序号,如果该序号为0表示没有

输出

   共三行,第一行为二叉树的前序遍历,第二行为中序遍历,第三行为后序遍历

样例输入

7
F 2 3
C 4 5
E 0 6
A 0 0
D 7 0
G 0 0
B 0 0

样例输出

FCADBEG
ACBDFEG
ABDCGEF

来源

图论-树

C++

#include <bits/stdc++.h>using namespace std;struct Node {char data;int left;int right;
} Node[50];void preorder(int f) {if (f != 0) {cout << Node[f].data;preorder(Node[f].left);preorder(Node[f].right);}
}void inorder(int f) {if (f != 0) {inorder(Node[f].left);cout << Node[f].data;inorder(Node[f].right);}
}void postorder(int f) {if (f != 0) {postorder(Node[f].left);postorder(Node[f].right);cout << Node[f].data;}
}int main() {int n;cin >> n;for (int i = 1; i <= n; i++)cin >> Node[i].data >> Node[i].left >> Node[i].right;preorder(1);cout << endl;inorder(1);cout << endl;postorder(1);cout << endl;return 0;
}

Python

class Node:def __init__(self, data, left, right):self.data = dataself.left = leftself.right = rightdef preorder(f):if f != 0:print(Nodes[f].data, end='')preorder(Nodes[f].left)preorder(Nodes[f].right)def inorder(f):if f != 0:inorder(Nodes[f].left)print(Nodes[f].data, end='')inorder(Nodes[f].right)def postorder(f):if f != 0:postorder(Nodes[f].left)postorder(Nodes[f].right)print(Nodes[f].data, end='')n = int(input())
Nodes = [None]
for _ in range(n):v, l, r = map(str, input().split())node = Node(v, int(l), int(r))Nodes.append(node)
preorder(1)
print()
inorder(1)
print()
postorder(1)

1234: 二叉树的遍历相关推荐

  1. 算法基础11 —— 树入门(二叉树的遍历以及构造 + 普通树转换成二叉树 + 例题 + 二叉树的一些操作)

    字符二叉树的遍历 对于以上二叉树 先序遍历为(根左右) : ABCDEFG 中序遍历为(左根右) : CBEDAFG 后序遍历为(左右根) : CEDBGFA 层序遍历:(从左往右.从上往下) ABF ...

  2. 二叉树的遍历(递归与非递归)

    class Node: # 定义树节点def __init__(self, value, left=None, right=None): # 节点的值及左子树.右子树self.value = valu ...

  3. 刷题:二叉树的遍历方式及根据遍历结果还原二叉树

    二叉树的遍历方式及根据遍历结果还原二叉树 1. 二叉树的遍历方式 2. 根据遍历结果还原二叉树 2.1 已知先序遍历和中序遍历还原二叉树 2.2 已知后序遍历和中序遍历还原二叉树 实验代码: 1. 二 ...

  4. 后序遍历的非递归算法python_刷题系列 - Python用非递归实现二叉树后续遍历

    顺便把Python用非递归实现二叉树后续遍历也写了. 其实前序中序和后续都是针对父节点说的.比如下面这个最简单二叉树. 前序就是ABC,父节点A在前 中序就是BAC,父节点A在中间 后序就是BCA,父 ...

  5. 二叉树 1.0 -- 创建二叉树、遍历二叉树、二叉树常见问题求解

    树的结构主要是为了查找,这个主要是为了搜索,树的结构关注的不是增删查改 树 广义上面的树的结构我们不知道树的一个节点是有几个子节点的,所以这个时候我们需要定义的一种结构就是,一个节点的孩子是可以动态的 ...

  6. PTA数据结构与算法题目集 6-9 二叉树的遍历

    PTA数据结构与算法题目集(中文) 6-9 二叉树的遍历 void InorderTraversal( BinTree BT ){if(BT==NULL)return;if(BT->Left){ ...

  7. 【swjtu】数据结构实验6_二叉树的遍历算法

    实验内容及要求: 编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序.中序.后序以及层次遍历结点访问次序.其中层次遍历的实现需使用循环队列.二叉树结点数据类型建议选用字符类型. 实 ...

  8. 重拾算法(3)——用458329个测试用例全面测试二叉树和线索二叉树的遍历算法

    重拾算法(3)--用458329个测试用例全面测试二叉树和线索二叉树的遍历算法 在"上一篇"和"上上一篇"中,我给出了二叉树和线索二叉树的遍历算法.给出算法容易 ...

  9. 二叉树的遍历(包括递归和非递归方法)

    二叉树的遍历 遍历二叉树,就是按一定的某条搜索路径走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次.由于二叉树是非线性结构,每个结点都有可能有两棵子树,因此,树的遍历实质上是将二叉树的 ...

最新文章

  1. 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法
  2. 滴滴算法大赛算法解决过程 - 拟合算法
  3. PM——【1】维护功能位置主数据
  4. kotlin 协程异常处理机制颠覆三观
  5. FindChildControl与FindComponent(动态创建的控件要通过Owner.FindComponent去找该控件)
  6. 安卓隐藏摄像_【快讯:诺基亚发布三款安卓机;全面屏手机的最终形态,目标是去掉摄像头;iPhone 打电话不息屏或挂断电话后不亮屏是什么问题?】...
  7. 小米全球第二,雷军签发内部嘉奖令;亚马逊被欧盟处以创纪录的8.88亿美元罚款;​PyCharm 2021.2 发布|极客日报...
  8. 日常客户咨询问题总结
  9. Git学习笔记一《版本控制之道-使用Git》
  10. python pdf模块_用于将PDF转换为文本的Python模块
  11. 智能优化算法应用:基于麻雀搜索算法无线传感器网络(WSN)覆盖优化 - 附代码
  12. 最新免费可使用在线音乐网站+多解析源码
  13. testbed笔记:头文件里的函数
  14. Android8.1 MTK平台 SystemUI源码分析之 Notification流程
  15. 计算机发展简史及其关键技术年表
  16. pytorch统计模型参数量
  17. 悟空crm配置mysql_超简单的悟空crm安装教程!看完不信你不会
  18. Pycharm浏览器打开报错解决
  19. vue路由跳转返回上一级
  20. 【音频分离】python包安装方法以及音频分离

热门文章

  1. Spring mail 邮件服务及其参数配置(properties文件的读写)
  2. python计算中奖问题的概率
  3. zcmu1434糖果迷阵
  4. linux ps ef 问号,打造个性问号铅笔图案的PS技巧
  5. CMS 内容管理系统
  6. skynet原理解析
  7. 组图:1948年伦敦奥运会
  8. Linux平台下Java调用C函数
  9. 微信支付费率0.38还是0.6,0.2费率怎么开,3分钟申请教程
  10. Linux(程序设计):10---字节操纵函数(bzero、bcopy、bcmp)