class Solution {
public :
vector< int > maxInWindows ( const vector< int > & num, unsigned int size)
{
int length = num. size ( ) ;
vector< int > vec1;
for ( int i = 0 ; i + size - 1 < length; ++ i)
{
vector< int > vec2;
auto it = num[ i] ;
for ( int j = i, k = 0 ; k < size; ++ j, ++ k)
{
vec2. push_back ( num[ j] ) ;
}
sort ( vec2. begin ( ) , vec2. end ( ) ) ;
vec1. push_back ( vec2[ size - 1 ] ) ;
}
return vec1;
}
} ;
class Solution {
public :
TreeNode* reConstructBinaryTree ( vector< int > pre, vector< int > vin) {
int vinlen = vin. size ( ) ;
if ( vinlen == 0 )
return NULL ;
vector< int > pre_left, pre_right, vin_left, vin_right;
TreeNode* head = new TreeNode ( pre[ 0 ] ) ;
int gen = 0 ;
for ( int i = 0 ; i< vinlen; i++ ) {
if ( vin[ i] == pre[ 0 ] ) {
gen = i;
break ;
}
}
for ( int i = 0 ; i < gen; i++ ) {
vin_left. push_back ( vin[ i] ) ;
pre_left. push_back ( pre[ i + 1 ] ) ;
}
for ( int i = gen + 1 ; i < vinlen; i++ ) {
vin_right. push_back ( vin[ i] ) ;
pre_right. push_back ( pre[ i] ) ;
}
head- > left = reConstructBinaryTree ( pre_left, vin_left) ;
head- > right = reConstructBinaryTree ( pre_right, vin_right) ;
return head;
}
} ;