数据结构——树的遍历相关笔试题
来源:互联网 发布:网络电视必须买盒子么 编辑:程序博客网 时间:2024/06/07 18:16
一颗二叉树的先序遍历:ABDECFG;中序遍历:DBEAFCG;后序遍历:DEBFGCA。
对于二叉树的遍历在之前的博客中有介绍:
http://blog.csdn.net/Su_coding/article/details/70184419
1.根据先序和中序遍历写出后序遍历:
思路:
- 根据先序遍历可知根节点为A;
- 根据中序遍历可知DBE为A的左子树,FCG为A的右子树;
- 递归实现,把DBE当作一颗新树,把FCG当作一颗新树;
- 在递归的过程当中输出后序。
代码实现:
#include <iostream>#include <cstdio>using namespace std;/* * t1存储先序遍历输入进去的数组,t2存储中序遍历输入进去的数组。 */char t1[100],t2[100];/* *a代表先序遍历数组中的下标; *b代表中序遍历数组中的下标; *n代表传进来数组中的个数。 */void work(int a,int b,int n){ if(n == 1) { printf("%c ",t1[a]); return ; } else if(n < 1) return; int i = 0; for(i=0;t1[a] != t2[b+i];i++); work(a+1,b,i); work(a+i+1,b+i+1,n-i-1); printf("%c ",t1[a]);}int main(){ int i,n; scanf("%d",&n); getchar(); for(i=0;i<n;i++) scanf("%c",&t1[i]); getchar(); for(i=0;i<n;i++) scanf("%c",&t2[i]); work(0,0,n); return 0;}
2.根据后序和中序求前序
思路:
- 根据后序遍历可知根节点为A;
- 根据中序遍历可知DBE为A的左子树,FCG为A的右子树;
- 递归实现,把DBE当作一颗新树,把FCG当作一颗新树;
- 在递归的过程当中输出前序。
代码实现:
#include <iostream>using namespace std;/* *t1存储后序遍历输入的数组,t2存储中序遍历输入的数组。 */char t1[100],t2[100];/* * a代表后序遍历数组中的下标 * b代表中序遍历数组中的下标 * c代表传参时数组中有效的数据个数 */void work(int a,int b,int n){ if(n == 1) { cout<<t1[a] ; return; } else if(n < 1) return; int i = 0; for(i=0; t1[a] != t2[b+i]; i++); cout<<t1[a] ; work(a-1-i,b,i); work(a-1,b+i+1,n-i-1);}int main(){ int i,n; cin>>n; for(i=0; i<n; i++) cin>>t1[i]; for(i=0; i<n; i++) cin>>t2[i]; work(n-1,0,n); return 0;}
0 0
- 数据结构——树的遍历相关笔试题
- 数据结构——二叉树的遍历
- 数据结构——二叉树的遍历
- 数据结构——二叉树的遍历
- 数据结构——二叉树的遍历
- 数据结构——二叉树的遍历
- 数据结构——二叉树的遍历
- 数据结构——树的遍历
- 数据结构——树的水平遍历
- 数据结构——树的遍历
- 数据结构——树的遍历
- 数据结构笔试—基础知识
- 人搜笔试编程题——树的层序遍历
- 数据结构(5)——树及树的遍历
- Python数据结构——解析树及树的遍历
- 数据结构——二叉树的层次遍历
- 数据结构例程——二叉树遍历的递归算法
- 数据结构例程——二叉树的层次遍历算法
- 多个处理器和多核处理器的区别
- AC自动机专题——F
- ios开发之 -- 调用系统定位获取当前经纬度与地理信息
- Nth Digit问题及解法
- js数组方法总结
- 数据结构——树的遍历相关笔试题
- HDU
- 【C++】浅谈C++模板
- GET请求和POST请求的参数
- 前端常用组件汇总
- Third Maximum Number问题及解法
- ACdream 1015 Double Kings 树的重心
- Windows系统功能模拟 C++(EasyX插件)—— 3rd 界面绘制(一)
- nginx安装配置