2020第12-14周练习——7-4 树的遍历 (20分)
发布日期:2021-05-06 20:35:20 浏览次数:31 分类:精选文章

本文共 894 字,大约阅读时间需要 2 分钟。

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

输入格式:

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

输出格式:

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

输入样例:

72 3 1 5 7 6 41 2 3 4 5 6 7

输出样例:

4 1 6 3 5 7 2

思路

和前序中序后序(其中两个推出另一个)不同的是,设置vector xx[31];放层序遍历元素xx[num].push_back(x1[root]);
代码

#include
using namespace std;int x1[31],x2[31];//后序,中序int ma=0;vector
xx[31];//层序遍历void fun(int root,int start,int end,int num){ if(start>end||start<0) return; xx[num].push_back(x1[root]); int i; for(i=start;i<=end;i++){ if(x2[i]==x1[root]) break; } if(num>ma) ma=num; fun(root-end+i-1,start,i-1,num+1);//左子树 fun(root-1,i+1,end,num+1);//右子树}int main(){ int n; cin>>n; for(int i=0;i
>x1[i]; for(int i=0;i
>x2[i]; fun(n-1,0,n-1,0); int flag=0; for(int i=0;i<=ma;i++){ for(int j=0;j
上一篇:2020第12-14周练习——6-2 邻接表存储图的广度优先遍历 (20分)
下一篇:2020第12-14周练习——7-3 顺序存储的二叉树的最近的公共祖先问题 (20分)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月03日 22时56分35秒