輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 輸入: 第一行輸入有n,n表示結點數,結點號從1到n。根結點為1。 n <= 10。 接下來有n行,每行有兩個個整型a和b,表示第i個節點的左右孩子孩子。a為左孩子,b為右孩子。當a為-1時,沒有左孩子。當b為-1時,沒有右孩子。 輸出: 輸出一個整型,表示樹的深度。 樣例輸入: 3 2 3 -1 -1 -1 -1 樣例輸出: 2 思想:這個沒什麼思想,就是樹的遍歷而已 代碼AC: [cpp] #include <stdio.h> #include <stdlib.h> typedef struct tree { int id; int vi; int lc; int rc; }tree, *p_tree; int n; p_tree t; int level; void fun( int idx, int l ) { int tmp; if( t[idx].lc == -1 && t[idx].rc == -1 ) { if( l > level ) { level = l; } } else { if( t[idx].rc <= n && t[idx].rc >= 1 ) { fun( t[idx].rc - 1, l + 1 ); } if( t[idx].lc <= n && t[idx].lc >= 1 ) { fun( t[idx].lc - 1, l + 1 ); } } } int main() { int i; while( scanf("%d", &n) != EOF ) { www.2cto.com t = ( p_tree )malloc( sizeof( tree ) * n ); for( i = 0; i < n; i++ ) { t[i].id = i + 1; scanf("%d%d", &t[i].lc, &t[i].rc); } level = -1; fun( 0, 1 ); printf("%d\n", level); } return 0; }