L2-3 完全二叉樹的層序遍歷 (25分)


一個二叉樹,如果每一個層的結點數都達到最大值,則這個二叉樹就是完美二叉樹。對於深度為 D 的,有 N 個結點的二叉樹,若其結點對應於相同深度完美二叉樹的層序遍歷的前 N 個結點,這樣的樹就是完全二叉樹。

給定一棵完全二叉樹的后序遍歷,請你給出這棵樹的層序遍歷結果。

輸入格式:

輸入在第一行中給出正整數 N(≤),即樹中結點個數。第二行給出后序遍歷序列,為 N 個不超過 100 的正整數。同一行中所有數字都以空格分隔。

輸出格式:

在一行中輸出該樹的層序遍歷序列。所有數字都以 1 個空格分隔,行首尾不得有多余空格。

輸入樣例:

8
91 71 2 34 10 15 55 18

輸出樣例:

18 34 55 71 2 10 15 91

 

  思想:就是dfs,直接走到最底下的最后一個結點,然后構造一個一棵樹(用數組表示的),我這里用的是nums數組,然后一個for輸出!就完事了

 

#include<bits/stdc++.h>
using namespace std;
int k ;    int n ;
int nums[100];
void F(int p , int a[])
{
    if(p > n) return ;
    F(p<<1 , a);
    F(p<<1|1 , a);
    nums[p] = a[k++];
}
int main()
{

    cin>>n;
    int pos[36];
    k = 1 ;
    for(int i = 1 ; i <= n ; i++) cin>>pos[i];
    F(1,pos);
    for(int i = 1 ; i <= n ;i++){
        if(i==1) cout<<nums[i];
        else cout<<" "<<nums[i];
    }
    
    return 0;
} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM