#include <stdio.h>
#include <stdlib.h>
int n, * post_order, * level_order, trace;
void find_level( int root ) {
if ( root > n ) return ;
int l = root << 1;
find_level( l );
find_level( l + 1 );
level_order[ root ] = post_order[ ++trace ];
}
int main( void ) {
scanf( "%d", &n );
post_order = ( int * ) malloc( sizeof( int ) * ( n + 1 ) );
level_order = ( int * ) malloc( sizeof( int ) * ( n + 1 ) );
for( int i = 1; i <= n; ++i ) scanf( "%d", post_order + i );
find_level( 1 );
for( int i = 1; i <= n; ++i )
if ( i == 1 ) printf( "%d", level_order[ i ] );
else printf( " %d", level_order[ i ] );
return 0;
}
二叉树-Postorder构造Levelorder
于 2022-10-16 16:29:26 首次发布