LeetCode 二叉樹最大深度(遞迴)

2021-09-19 05:47:51 字數 1568 閱讀 6023

給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹(full binary tree)結構相同,但一些節點為空。

每一層的寬度被定義為兩個端點(該層最左和最右的非空節點,兩端點間的null節點也計入長度)之間的長度。

示例 1:

輸入: 

1/ \

3 2

/ \ \

5 3 9

輸出: 4

解釋: 最大值出現在樹的第 3 層,寬度為 4 (5,3,null,9)。

示例 2:

輸入: 

1/

3

/ \

5 3

輸出: 2

解釋: 最大值出現在樹的第 3 層,寬度為 2 (5,3)。

示例 3:

輸入: 

1/ \

3 2

/

5

輸出: 2

解釋: 最大值出現在樹的第 2 層,寬度為 2 (3,2)。

示例 4:

輸入: 

1/ \

3 2

/ \

5 9

/ \

6 7

輸出: 8

解釋: 最大值出現在樹的第 4 層,寬度為 8 (6,null,null,null,null,null,null,7)。

注意: 答案在32位有符號整數的表示範圍內。

思路分析:如果我們從根節點開始標號為1,則根節點與左右子節點存在乙個規律,leftindex = rootindex * 2,rightindex = rootindex * 2 + 1。所以我們只要記錄每一層的第乙個下標,然後動態更新最大值即可。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

//deepth代表root的深度,rootindex代表的是root的深度

有幾個測試資料非常**,二叉樹的深度非常大,導致下標溢位。。。

LeetCode 二叉樹最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最大深度 3 解題關鍵 明白二叉樹基本操作。definition for a bin...

二叉樹最大深度 leetcode

這個題目開始要想是用遞迴,但是遞迴的形式,沒有想對。直接判斷left right 比較麻煩,不如在遞迴呼叫的時候判斷root是否為空。public class solution int led maxdepth root.left int rid maxdepth root.right return...

Leetcode二叉樹最大深度

二叉樹的最大深度,即為二叉樹的層數,開始的想法是遍歷左子樹和遍歷右子樹,返回記錄的最大值。這樣明顯是有漏洞的,如果最右的右子樹有左孩子或者左子樹有右孩子,結果就是不正確的。使用遞迴的方法,整樹的最大深度為左孩子樹的最大深度或者右孩子樹的最大深度。遞迴結束的條件是,當乙個結點的左右子樹都為空時,返回1...