1234: 二叉树的遍历
题目描述
给出一个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: 二叉树的遍历相关推荐
- 算法基础11 —— 树入门(二叉树的遍历以及构造 + 普通树转换成二叉树 + 例题 + 二叉树的一些操作)
字符二叉树的遍历 对于以上二叉树 先序遍历为(根左右) : ABCDEFG 中序遍历为(左根右) : CBEDAFG 后序遍历为(左右根) : CEDBGFA 层序遍历:(从左往右.从上往下) ABF ...
- 二叉树的遍历(递归与非递归)
class Node: # 定义树节点def __init__(self, value, left=None, right=None): # 节点的值及左子树.右子树self.value = valu ...
- 刷题:二叉树的遍历方式及根据遍历结果还原二叉树
二叉树的遍历方式及根据遍历结果还原二叉树 1. 二叉树的遍历方式 2. 根据遍历结果还原二叉树 2.1 已知先序遍历和中序遍历还原二叉树 2.2 已知后序遍历和中序遍历还原二叉树 实验代码: 1. 二 ...
- 后序遍历的非递归算法python_刷题系列 - Python用非递归实现二叉树后续遍历
顺便把Python用非递归实现二叉树后续遍历也写了. 其实前序中序和后续都是针对父节点说的.比如下面这个最简单二叉树. 前序就是ABC,父节点A在前 中序就是BAC,父节点A在中间 后序就是BCA,父 ...
- 二叉树 1.0 -- 创建二叉树、遍历二叉树、二叉树常见问题求解
树的结构主要是为了查找,这个主要是为了搜索,树的结构关注的不是增删查改 树 广义上面的树的结构我们不知道树的一个节点是有几个子节点的,所以这个时候我们需要定义的一种结构就是,一个节点的孩子是可以动态的 ...
- PTA数据结构与算法题目集 6-9 二叉树的遍历
PTA数据结构与算法题目集(中文) 6-9 二叉树的遍历 void InorderTraversal( BinTree BT ){if(BT==NULL)return;if(BT->Left){ ...
- 【swjtu】数据结构实验6_二叉树的遍历算法
实验内容及要求: 编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序.中序.后序以及层次遍历结点访问次序.其中层次遍历的实现需使用循环队列.二叉树结点数据类型建议选用字符类型. 实 ...
- 重拾算法(3)——用458329个测试用例全面测试二叉树和线索二叉树的遍历算法
重拾算法(3)--用458329个测试用例全面测试二叉树和线索二叉树的遍历算法 在"上一篇"和"上上一篇"中,我给出了二叉树和线索二叉树的遍历算法.给出算法容易 ...
- 二叉树的遍历(包括递归和非递归方法)
二叉树的遍历 遍历二叉树,就是按一定的某条搜索路径走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次.由于二叉树是非线性结构,每个结点都有可能有两棵子树,因此,树的遍历实质上是将二叉树的 ...
最新文章
- 11月14日云栖精选夜读 | 动画+原理+代码,解读十大经典排序算法
- 滴滴算法大赛算法解决过程 - 拟合算法
- PM——【1】维护功能位置主数据
- kotlin 协程异常处理机制颠覆三观
- FindChildControl与FindComponent(动态创建的控件要通过Owner.FindComponent去找该控件)
- 安卓隐藏摄像_【快讯:诺基亚发布三款安卓机;全面屏手机的最终形态,目标是去掉摄像头;iPhone 打电话不息屏或挂断电话后不亮屏是什么问题?】...
- 小米全球第二,雷军签发内部嘉奖令;亚马逊被欧盟处以创纪录的8.88亿美元罚款;​PyCharm 2021.2 发布|极客日报...
- 日常客户咨询问题总结
- Git学习笔记一《版本控制之道-使用Git》
- python pdf模块_用于将PDF转换为文本的Python模块
- 智能优化算法应用:基于麻雀搜索算法无线传感器网络(WSN)覆盖优化 - 附代码
- 最新免费可使用在线音乐网站+多解析源码
- testbed笔记:头文件里的函数
- Android8.1 MTK平台 SystemUI源码分析之 Notification流程
- 计算机发展简史及其关键技术年表
- pytorch统计模型参数量
- 悟空crm配置mysql_超简单的悟空crm安装教程!看完不信你不会
- Pycharm浏览器打开报错解决
- vue路由跳转返回上一级
- 【音频分离】python包安装方法以及音频分离