商城型网站建设代理加盟,怎么做网站建设销售,深圳大型网络科技公司,襄阳网站建设公司题干#xff1a;
给定一棵二叉树的后序遍历和中序遍历#xff0c;请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。
解题报告#xff1a; dfs求出这棵树来#xff0c;然后bfs求层序遍历就行了。
AC代码#xff1a;
#includecstdio
#include…题干
给定一棵二叉树的后序遍历和中序遍历请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。
解题报告 dfs求出这棵树来然后bfs求层序遍历就行了。
AC代码
#includecstdio
#includeiostream
#includealgorithm
#includequeue
#includemap
#includevector
#includeset
#includestring
#includecmath
#includecstring
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
const int MAX 2e5 5;
struct Node {int val,l,r;
} node[MAX];
int tot;
int c[MAX],b[MAX];
int dfs(int len,int b[],int c[]) {//中序后序 if(len 0) return -1;if(len 1) {node[tot].val b[1];node[tot].lnode[tot].r -1;return tot;}node[tot].val c[len];int res tot;int l;for(l 1; llen; l) {if(b[l] c[len]) break;}node[res].l dfs(l-1,b,c);//node[res].r dfs(len-l,bl-1,cl);node[res].r dfs(len-l,bl,cl-1);return res;
}
void bfs() {queueint q;q.push(1);while(q.size()) {int cur q.front();q.pop();if(cur ! 1) printf( );printf(%d,node[cur].val);if(node[cur].l ! -1) q.push(node[cur].l);if(node[cur].r ! -1) q.push(node[cur].r);}
}
int main()
{int n;cinn;for(int i 1; in; i) scanf(%d,ci);for(int i 1; in; i) scanf(%d,bi);dfs(n,b,c);//printf(%d,node[1].val);bfs();return 0 ;
}