【劍指offer】二叉樹深度
轉載請註明出處:http://blog.csdn.net/ns_code/article/details/27249675
- 題目描述:
輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。
- 輸入:
第一行輸入有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
思路很簡單,遞迴實現,程式碼如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct BTNode
{
int data;
int rchild;
int lchild;
}BTNode;
int max(int a,int b)
{
return a>b ? a:b;
}
/*
求二叉樹的深度
*/
int TreeDepth(BTNode *pTree,int index)
{
if(pTree == NULL)
return 0;
if(index == -1)
return 0;
else
return max(TreeDepth(pTree,pTree[index].lchild),TreeDepth(pTree,pTree[index].rchild)) + 1;
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
BTNode *pTree = NULL;
if(n>0)
{
pTree = (BTNode *)malloc(n*sizeof(BTNode));
if(pTree == NULL)
exit(EXIT_FAILURE);
int i;
//輸入n個節點的data
for(i=0;i<n;i++)
{
int data1,data2;
scanf("%d %d",&data1,&data2);
if(data1 != -1)
pTree[i].lchild = data1-1;
else
pTree[i].lchild = -1;
if(data2 != -1)
pTree[i].rchild = data2-1;
else
pTree[i].rchild = -1;
}
}
printf("%d",TreeDepth(pTree,0));
}
return 0;
}
/**************************************************************
Problem: 1350
User: mmc_maodun
Language: C
Result: Accepted
Time:0 ms
Memory:912 kb
****************************************************************/
相關文章
- 劍指Offer-40-二叉樹的深度二叉樹
- 劍指offer——二叉樹的深度C++二叉樹C++
- 《劍指offer》:[39]求解二叉樹的深度二叉樹
- 劍指offer | 55 - I. 二叉樹的深度二叉樹
- 劍指offer——重建二叉樹二叉樹
- 劍指offer(四)重建二叉樹二叉樹
- 劍指 Offer 07. 重建二叉樹二叉樹
- 【劍指offer】判斷二叉樹平衡二叉樹
- [劍指offer] 把二叉樹列印成多行二叉樹
- 劍指offer——二叉樹的映象C++二叉樹C++
- 【劍指offer】27. 二叉樹的映象二叉樹
- 《劍指offer》:[59]對稱的二叉樹二叉樹
- 《劍指offer》:[62]序列化二叉樹二叉樹
- 《劍指offer》:[60]把二叉樹列印成多行二叉樹
- 【劍指offer】從上向下列印二叉樹二叉樹
- 【劍指offer】5.二叉樹的映象和列印二叉樹
- 力扣 - 劍指 Offer 27. 二叉樹的映象力扣二叉樹
- 劍指offer(C++)——把二叉樹列印成多行C++二叉樹
- 劍指offer--把二叉樹列印成多行(C++)二叉樹C++
- # 劍指 Offer 68 - II. 二叉樹的最近公共祖先二叉樹
- 《劍指offer》之在完全二叉樹中新增子節點二叉樹
- 劍指offer——從上往下列印二叉樹C++二叉樹C++
- 《劍指offer》:[58]二叉樹的下一個結點二叉樹
- 《劍指offer》:[61]按之字形順序列印二叉樹二叉樹
- 劍指 Offer 32 - III. 從上到下列印二叉樹 III二叉樹
- 《劍指offer》:[39-1]判斷是否為平衡二叉樹二叉樹
- 【劍指offer】二叉樹中和為某一值的路徑二叉樹
- 【劍指offer】樹的子結構
- 劍指 Offer 34. 二叉樹中和為某一值的路徑二叉樹
- 劍指offer(java實現)第4題“重建二叉樹”-牛客網Java二叉樹
- 劍指 Offer 32 - I. 從上到下列印二叉樹(java解題)二叉樹Java
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- LeetCode 劍指offer——從上到下列印二叉樹 II、從上到下列印二叉樹 IIILeetCode二叉樹
- 劍指offer-17:樹的子結構
- 劍指offer面試18 樹的子結構面試
- PHPer面試必看:分門別類帶你擼《劍指Offer》之二叉樹PHP面試二叉樹
- (python版)《劍指Offer》JZ57:二叉樹的下一個結點Python二叉樹
- 劍指 Offer 32 - II. 從上到下列印二叉樹 II 做題筆記二叉樹筆記