The topic Description describes a binary tree that outputs its maximum width and height. The Input Description is an integer n in the first line of Input Description. There are two numbers in each row in the n rows below, which is the number of the node connected to the binary tree. If the n rows are not connected to the node, the value is 0. Output Description outputs a total of rows. the maximum width and height of the Output binary tree are separated by a space. Sample input Sample Input5 2 3 4 5 0 0 0 0 0 0 Sample output Sample Output2 3
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<bitset> #include<iomanip> using namespace std; int a[ 40 ][ 3 ] = { 0 } , num[ 40 ] ; int w = 0 , d = 0 ; void dfs( int x , int y ) { num[ y ]++ ; if( y > w ) w = y ; if( a[ x ][ 1 ] != 0 ) dfs( a[ x ][ 1 ] , y + 1 ) ; if( a[ x ][ 2 ] != 0 ) dfs( a[ x ][ 2 ] , y + 1 ) ; } int main() { int n ; cin >> n ; for( int i = 1 ; i <= n ; i++) cin >> a[ i ][ 1 ] >> a[ i ][ 2 ] ; dfs( 1 , 1 ) ; for( int i = 1 ; i <= 16 ; ++i ) if( num[ i ] > d ) d = num[ i ] ; cout << d << " " << w << endl ; return 0 ; } #include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<bitset>#include<iomanip>using namespace std;int a[ 40 ][ 3 ] = { 0 } , num[ 40 ] ;int w = 0 , d = 0 ;void dfs( int x , int y ){num[ y ]++ ;if( y > w )w = y ;if( a[ x ][ 1 ] != 0 )dfs( a[ x ][ 1 ] , y + 1 ) ;if( a[ x ][ 2 ] != 0 )dfs( a[ x ][ 2 ] , y + 1 ) ;}int main(){int n ;cin >> n ;for( int i = 1 ; i <= n ; i++)cin >> a[ i ][ 1 ] >> a[ i ][ 2 ] ;dfs( 1 , 1 ) ;for( int i = 1 ; i <= 16 ; ++i )if( num[ i ] > d )d = num[ i ] ;cout << d << " " << w << endl ;return 0 ;}