Leetcode No 111 二叉樹的最小深度

2021-10-19 11:54:15 字數 1123 閱讀 2373

給定乙個二叉樹,找出其最小深度。

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

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

示例 1:

輸入:root = [3,9,20,null,null,15,7]

輸出:2

示例 2:

輸入:root = [2,null,3,null,4,null,5,null,6]

輸出:5

首先可以想到使用深度優先搜尋的方法,遍歷整棵樹,記錄最小深度。

對於每乙個非葉子節點,我們只需要分別計算其左右子樹的最小葉子節點深度。這樣就將乙個大問題轉化為了小問題,可以遞迴地解決該問題

/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class solution

int leftdepth=mindepth(root->left);

int rightdepth=mindepth(root->right);

if(leftdepth==0)

if(rightdepth==0)

return min(leftdepth,rightdepth)+1;}};

時間複雜度:o(n),其中 n 是樹的節點數。對每個節點訪問一次。

空間複雜度:o(h),其中 h 是樹的高度。空間複雜度主要取決於遞迴時棧空間的開銷,最壞情況下,樹呈現鏈狀,空間複雜度為o(n)。平均情況下樹的高度與節點數的對數正相關,空間複雜度為o(logn)。

111 二叉樹的最小深度

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉節點的最短路徑的節點數量。解題思路 這題我想了很久。大概還是對遞迴不太熟悉吧。下面講解一下遞迴的思路 1.如果根節點是null,說明沒有深度。2.如果節點的左右兒子都不存在,說明只有自己,節點深度為1.3.如果節點沒有左兒子,但是有右兒子怎麼...

111 二叉樹的最小深度( )

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 920 157返回它的最小深度 2.注意 它是到最近的葉子節點,要多考慮根節點 class solution ...

111 二叉樹的最小深度

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最小深度 2.思路 求樹深用dfs,遞迴遍歷左子樹右子樹,取最小的深度。defini...