标签:dfs 完全 二叉树 end const turn pause lin out
根据完全二叉树的性质(编号为\(u\)的节点的左儿子编号为\(u*2\),右儿子编号为\(u*2+1\)),并利用后序遍历进行递归建树。
\(level[i]\)存储编号为\(i\)的节点的值。
const int N=35;
int post[N];
int level[N];
int n;
int k;
void dfs(int u)
{
if(u*2 <=n)
dfs(u*2);
if(u*2+1 <=n)
dfs(u*2+1);
level[u]=post[++k];
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>post[i];
dfs(1);
for(int i=1;i<=n;i++)
if(i > 1) cout<<‘ ‘<<level[i];
else cout<<level[i];
cout<<endl;
//system("pause");
return 0;
}
标签:dfs 完全 二叉树 end const turn pause lin out
原文地址:https://www.cnblogs.com/fxh0707/p/14681746.html