2020.11.28 天梯赛

完全二叉树 由后序遍历求层序遍历

int p[300], num[300], cur, n;

void dfs(int x)
{
    if(x > n)  return;
    dfs(2 * x);
    dfs(2 *x + 1);
    p[++cur] = x;          //p[i] 表示后序第i个结点是层次遍历的第p[i]个结点
}

int main()
{
    cin>>n;                    //结点数量
    dfs(1);
    for(int i = 1; i <= n; i++)            //读入后序遍历
    {
        int tmp;
        cin>>tmp;
        num[p[i]] = tmp;
    }
    for(int i = 1; i <= n; i++)              //输出层次遍历
        cout << num[i] << endl;
}
原文地址:https://www.cnblogs.com/Maxx-el/p/14054024.html