劍指Offer之二叉樹的深度

2021-09-01 21:24:50 字數 1332 閱讀 6835

題目描述:輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

輸入:第一行輸入有n,n表示結點數,結點號從1到n。根結點為1。 n <= 10。

接下來有n行,每行有兩個個整型a和b,表示第i個節點的左右孩子孩子。a為左孩子,b為右孩子。當a為-1時,沒有左孩子。當b為-1時,沒有右孩子。

輸出:輸出乙個整型,表示樹的深度。

樣例輸入:

32 3-1 -1-1 -1
樣例輸出:

通過遞迴,迭代計算左右子樹的深度,+1.

有乙個利好的訊息是第n個節點數值為n,這樣我們就可以利用二維陣列來表示樹結構。

在程式中利用二維陣列來表示樹結構,[i][0]為第i個節點的左節點,[i][1]為第i個節點的右節點

/*********************************

* 日期:2013-12-06

* 題號: 題目1350:二叉樹的深度

* 結果:ac

* 總結:

**********************************/

#include #include #include using namespace std;

/*通過遞迴,迭代計算左右子樹的深度,+1.

在程式中利用二維陣列來表示樹結構,[i][0]為第i個節點的左節點,[i][1]為第i個節點的右節點

*/int tree[11][2];

int treedepth(int n)

int left = 0,right = 0;

//迭代計算左右子樹的深度

//左子樹

if(tree[n][0]!= -1)

//右子樹

if(tree[n][1]!= -1)

return 1 + max(left,right);

}int main()

height = treedepth(1);

printf("%d\n",height);

}//while

return 0;

}

劍指Offer之 二叉樹的深度

題目 1 求二叉樹的最大深度和最小深度。2 判斷一棵二叉樹是不是平衡二叉樹。include using namespace std struct binarytreenode binarytreenode int value m nvalue value m pleft null m pright ...

劍指offer之二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。方法一 可以使用遞迴的方法,分別求左子樹和右子樹的深度,則樹的深度是 更大者 1。這是乙個遞迴的方法。方法二 使用層次遍歷的方法,每訪問一層,則深度 1,所有層的訪問結束之後,就等...

劍指offer 二叉樹的深度

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。如果二叉樹只有根節點那麼深度就是1,如果只有左子樹,那麼就是左子樹的深度加1就是整棵二叉樹的深度 如果只有右子樹,那麼二叉樹的深度就是右子樹的深度加1 如果既有左子樹又有右子樹,那...