程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 二叉樹的深度

二叉樹的深度

編輯:C++入門知識

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。 輸入: 第一行輸入有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;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved