二叉树遍历详细

给定一棵二叉树的后序遍历和中序遍历,请你输出其先序遍历的序列。这里假设键值都是互不相等的正整数。

输入格式:

输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。

输出格式:

在一行中输出该树的先序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

输入样例:

6
4 2 5 1 6 3
4 5 2 3 1 6

输出样例:

3 5 4 2 1 6
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int per[N],in[N],post[N];
int k;
//定义二叉树
struct node{int val;node *l;node *r;node(int val):val(val),l(NULL),r(NULL){}
};
//建树
void build(int l,int r,int &t,node *&root){////if(t==0) return ;或者下边写if(flag==-1) return ;都可以 int flag=-1;for(int i=l;i<=r;i++)if(in[i]==post[t]){flag=i;break;}//if(flag==-1) return ;root=new node(in[flag]);t--;
/
///这两句的顺序 if(flag<r) build(flag+1,r,t,root->r);if(flag>l) build(l,flag-1,t,root->l);
}
//前序遍历
void qian(node*root){if(root!=NULL){per[k++]=root->val;qian(root->l);qian(root->r);}
}
void refree(node*root){if(root==NULL) return ;refree(root->l);refree(root->r);delete root;
}
int main(){int n;cin>>n;for(int i=1;i<=n;i++) cin>>post[i];for(int i=1;i<=n;i++) cin>>in[i];node *root;int t=n;build(1,n,t,root);k=0;qian(root);for(int i=0;i<k;i++){cout<<per[i];if(i!=k-1) cout<<" ";}refree(root);return 0;
}

二叉树(知道中序遍历和后序遍历得到先序遍历)相关推荐

  1. LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

    LeetCode 刷题之旅(2020.05.22)--105. 从前序与中序遍历序列构造二叉树(中) 题目: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如, ...

  2. python实现二叉树遍历(前序遍历、中序遍历、后序遍历)

    python实现二叉树遍历(前序遍历.中序遍历.后序遍历) 在计算机科学中,二叉树是一种树数据结构,其中每个节点最多有两个子节点,称为左子节点和右子节点.使用集合理论概念的递归定义是(非空)二叉树是元 ...

  3. 二叉树的前序遍历,中序遍历,后序遍历学习 (原)

    经验: 不要死记各个遍历节点的位置,将一个复杂的二叉树当作一个个小的二叉树学习前序遍历,中序遍历,后序遍历会更容易理解 转载于:https://www.cnblogs.com/gyrgyr/p/962 ...

  4. 已知二叉树的前序遍历、中序遍历或者中序遍历、后序遍历求二叉树结构的算法

    二叉树中的前序遍历是先访问根结点,再访问左子树,右子树. 中序遍历是先访问左子树,再是根结点,最后是右子树. 后序遍历是先访问左子树,再是右子树,最后是根结点. 算法思路是先根据前序遍历的第一个结点或 ...

  5. 二叉树 —— 创建二叉树 先序遍历 、中序遍历、后序遍历(递归方式、非递归方式)

    #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef char DataType; #de ...

  6. 数据结构34:二叉树前序遍历、中序遍历和后序遍历

    链式存储结构存储的二叉树,对树中结点进行逐个遍历时,由于是非线性结构,需要找到一种合适的方式遍历树中的每个结点. 递归思想遍历二叉树 之前讲过,树是由根结点和子树部分构建的,对于每一棵树来说,都可以分 ...

  7. 【练习】树(Tree, UVa 548)给一棵点带权(权值各不相同)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小。

    给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小.如果有多解,该叶子本身的权应尽量小.输入中每两行表示一棵树,其中第一行为中序遍 ...

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

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

  9. C实现二叉树的先序遍历,中序遍历,后序遍历

    1  要创建的二叉树图 2 输出结果图 : 3 完整代码如下: #include<stdio.h> #include<malloc.h>//定义二叉树 typedef stru ...

  10. 阿里笔试-二叉树由前序遍历和中序遍历推导后序遍历

    题目描述 已知一个二叉树的前序遍历结果是(ACDEFHGB) ,中序遍历结果是(DECAHFBG),请问后续遍历结果是(). 思路 由前序遍历的第一个节点A是根节点,把中序遍历分为(DEC)A(HFB ...

最新文章

  1. Master PDF Editor中文版
  2. 吹爆了这个可视化神器,上手后直接开大~
  3. 超速问题的c语言编程,超速行驶问题--精选.doc
  4. “入乡随俗,服务为主” 发明者量化兼容麦语言啦!
  5. facebook.com_如何降低电子商务的Facebook CPM
  6. android iOS 都精通,Android IOS开发要理解何为面向对象的思维
  7. 转 :原码,反码,补码
  8. 微软这次开源的是 Windows 计算器
  9. 虚拟机linux gedit,Linux系统中把gedit改造成TextMate的方法
  10. 1.MongoDB入门详解
  11. 机器学习 结构化数据_聊天机器人:根据结构化数据创建自然语言
  12. 什么是AsHelper
  13. 如何在typescript-react项目中使用emotion的css行内样式
  14. html5 黑色圆圈,html5使用canvas画空心圆与实心圆_html5教程技巧
  15. vue2支付宝网页授权登录
  16. 《人机交互技术》第四章 人机交互技术概述
  17. 200行Python实现的qq连连看辅助,用于学习,请不要拿去伤害玩家
  18. 激光投影仪和大屏液晶电视有哪些优缺点?二者应该怎么选?
  19. sudo: no valid sudoers sources found,quitting
  20. 测试手机的价格的软件,给大家推荐一个测心率的手机软件,不用花昂贵的价钱买设备啦~ - 薄荷减肥论坛...

热门文章

  1. 0基础如何转行自学软件测试
  2. connect ETIMEDOUT
  3. Hutool excel 设置单元格格式为文本
  4. excel两个表格数据对比_表格技巧—Excel表格两列数据合并
  5. python实现对文件夹的图片分类存放(自动新建文件夹存放图片)
  6. layui switch使用详解
  7. switch怎么用字符c语言,switch怎么用c语言-switch用c语言讲解
  8. python显示表格_python显示表格
  9. arm触摸屏的头文件_ARM触屏校准程序
  10. 如何把手变成手控_女生的手怎样变好看?