将二叉树序列转化为二维数组,父节点存放子节点。

样例:

在这里插入图片描述

代码:

#include<bits/stdc++.h>
using namespace std;
string s;
vector<vector<int> > vv;
int A[500005];
int f_tree(int &x)
{//初始化树。 
 if(s[x]=='0')
 {
  return x;
 }
 if(s[x]=='2'){
  int c=x;
  x++;
  vv[c].push_back(f_tree(x));
  x++;
  vv[c].push_back(f_tree(x));
  return c;
 }
 if(s[x]=='1'){
  int c=x;
  x++;
  vv[c].push_back(f_tree(x));
  return c;
 }
}
int main()
{
 cin>>s;
 vector<int> v;
 for(int i=0;i<s.size();i++) vv.push_back(v);
 memset(A,-1,sizeof(A));
 int c=0;
 f_tree(c);
 for(int i=0;i<s.size();i++){
  for(int j=0;j<vv[i].size();j++) cout<<vv[i][j]<<' ';
  cout<<endl;
 }
}

测试:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42721412/article/details/107606904