首页 > 其他分享 >二叉树由前序遍历和中序遍历求后序遍历

二叉树由前序遍历和中序遍历求后序遍历

时间:2023-01-09 01:12:43浏览次数:42  
标签:遍历 后序 中序 pro 二叉树 序列 前序



题目:二叉树遍历

问题描述

给定一棵二叉树的先序遍历和中序遍历序列,求其后序遍历序列。

输入格式

输入数据有两行,为两个字符串,其长度n均小于等于26。第一行为先序遍历序列,第二行为中序遍历序列。

二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。

输出格式

在一行上输出后序遍历序列。

样例输入

ABC

BAC

样例输出

BCA

1 #include <iostream>
 2 #include <string>
 3 using namespace std ;
 4 void backvis(string pro,string mid)
 5 {
 6     if(pro.length()==0)//边界条件,当字符串为空的时候表示遍历空树
 7     return;
 8     else if(pro.length()==1)//边界条件,当字符串只有一个字母的时候表示树只有一个节点,后序遍历序列即该节点本身
 9     {
10         cout<<pro[0];    
11         return;    
12     }
13 
14     int k=0;//k表示根节点在中序遍历中的位置,从0开始
15     char root=pro[0];
16     for(int i=0;i<mid.length();i++)
17     {
18         if(mid[i]==root)
19         k=i;    
20     }
21     
22     backvis(pro.substr(1,k),mid.substr(0,k));//依据左子树的先序遍历和中序遍历得到左子树后序遍历序列
23     backvis(pro.substr(k+1),mid.substr(k+1));
24     cout<<root;
25 }
26 int main()
27 {
28    string pro,mid;
29    cin>>pro>>mid;
30    backvis(pro,mid);
31     return 0;
32 }

 

标签:遍历,后序,中序,pro,二叉树,序列,前序
From: https://www.cnblogs.com/linkstudy/p/17035858.html

相关文章

  • 二叉树递归模板总结
    101.对称二叉树boolisQ(TreeNode*root1,TreeNode*root2){if(root1==nullptr&&root2==nullptr){returntrue;}elseif(roo......
  • leetcode-671. 二叉树中第二小的节点
    dfs取左右子树第二大的值进行比较/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint*Left*TreeNode*Right*TreeNod......
  • 101. 对称二叉树
    101.对称二叉树难度简单2227收藏分享切换为英文接收动态反馈给你一个二叉树的根节点root,检查它是否轴对称。示例1:输入:root=[1,2,2,3,4,4,3]输出:true示例2:......
  • LeetCode 236_二叉树的最近公共祖先
    LeetCode236:二叉树的最近公共祖先题目给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近......
  • 二叉树 LC104.MaxDepth of Binary Tree
    最近看了labuladong讲二叉树,掌握了一种思路:拿到二叉树题目,思考三个维度——能不能遍历一遍就得出结果?如果可以,配合一个traverse函数+外部变量进行实现。——能不能定义......
  • 广度优先遍历和深度优先遍历
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Docu......
  • 【C语言 数据结构】二叉树
    文章目录​​二叉树​​​​一、二叉树的概念​​​​二、二叉树的基本形态​​​​三、二叉树的性质​​​​四、特殊的二叉树​​​​五、二叉树的存储结构​​​​5.1......
  • 每日算法之在二叉树中找到两个节点的最近公共祖先
    JZ86在二叉树中找到两个节点的最近公共祖先题目给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值o1和o2,请找到o1和o2的最近公共祖先节点。注:本题保......
  • LeetCode 103_ 二叉树的锯齿形层序遍历
    LeetCode103:二叉树的锯齿形层序遍历题目给你二叉树的根节点root,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进......
  • 102. 二叉树的层序遍历
    102.二叉树的层序遍历{学会层序遍历,直接打十个!!}难度中等1542收藏分享切换为英文接收动态反馈给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访......