104 二叉樹的最大深度

2021-10-08 14:44:19 字數 1475 閱讀 8941

題目描述:給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

說明:葉子節點是指沒有子節點的節點。

示例:給定二叉樹  [3, 9, 20, null, null, 15, 7]

返回它的最大深度3。

整棵二叉樹的深度等於其左子樹深度(leftheight)和右子樹深度(rightheight),兩者中的較大值加1(加1即加上根節點)

max(leftheight, rightheight) + 1

而左子樹和右子樹的最大深度可以以同樣的方式進行計算。因此可以先遞迴計算出其左子樹和右子樹的最大深度,再求得當

前二叉樹的最大深度。遞迴在訪問到空節點時退出。

/**

* definition for a binary tree node.

* public class treenode

* }*/

class solution

else}}

複雜度分析時間複雜度:o(n),其中n為二叉樹節點的個數。每個節點在遞迴中只被遍歷一次。

空間複雜度:o(height),其中height表示二叉樹的高度。遞迴函式需要棧空間,棧空間取決於遞迴的深度,因此空間複雜度等

價於二叉樹的高度。

最壞情況下,樹是完全不平衡的,例如每個節點只剩下左子節點,遞迴將會呼叫n次,此時空間複雜度為o(n)。

最好情況下,樹是完全平衡的,樹的高度為log(n),此時時間複雜度為o(log(n)).

對廣度優先搜尋進行修改,當前廣度優先搜尋佇列裡存放的是當前層的所有節點。每次拓展下一層的時候,將佇列裡所有節

點都拿出來進行拓展。用乙個變數count來維護拓展的次數,該二叉樹的深度即為result。

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

queuequeue = new linkedlist();

queue.offer(root);

int count = 0;

while(!queue.isempty())

if(temp.right != null)

} count++;

}return count;}}

複雜度分析時間複雜度:o(n),其中n為二叉樹節點的個數,每個節點僅被訪問一次。

空間複雜度:此方法空間的消耗取決於佇列儲存的元素數量,在最壞情況下回達到o(n),最優情況下為o(1)。

104 二叉樹的最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最大深度 3 思路 使用遞迴,遍歷左子樹右子樹,使用max找出最大的深度。defin...

104 二叉樹的最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最大深度 3 解題思路 採用dfs進行深度搜尋,一行算一次搜尋,輸出結果長度即可。...

104 二叉樹的最大深度

每日leetcode 24 二叉樹的最大深度 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最大深度 3 這道題遞迴到最後葉節點...