求二叉樹(shù)的最小深度

LeetCode 111

題目描述

給定一個(gè)二叉樹(shù),找出其最小深度。

最小深度是從根節(jié)點(diǎn)到最近葉子節(jié)點(diǎn)的最短路徑上的節(jié)點(diǎn)數(shù)量。

說(shuō)明: 葉子節(jié)點(diǎn)是指沒(méi)有子節(jié)點(diǎn)的節(jié)點(diǎn)。

示例:

給定二叉樹(shù) [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最小深度 2.

題目分析

  • 寬度優(yōu)先遍歷(BFS)借助隊(duì)列,最先到達(dá)的葉子節(jié)點(diǎn)一定是最小深度上的葉子節(jié)點(diǎn)。
  • 深度優(yōu)先遍歷(DFS)需要遍歷根節(jié)點(diǎn)到所有葉子節(jié)點(diǎn)之間的路徑,然后從中選取最小深度。

代碼

BFS (c++)

int minDepth(TreeNode* root) {
        if (root == NULL) return 0;
        queue<pair<TreeNode*, int>>nodes;
        nodes.emplace(root,1);
        
        while(!nodes.empty()){
            root = nodes.front().first;
            int depth = nodes.front().second;
            nodes.pop();
            if (!root->left && !root->right){
                return depth;
            }
            if(root->left){
                nodes.emplace(root->left, depth+1);
            }
            if(root->right){
                nodes.emplace(root->right, depth+1);
            }
        }
        return 0;
    }

時(shí)間復(fù)雜度:O(N) N是節(jié)點(diǎn)的數(shù)量。
空間復(fù)雜度:隊(duì)列的容量最大為樹(shù)的節(jié)點(diǎn)數(shù)量,即O(N)。

DFS (python)

class Solution:
    import copy
    def minDepth(self, root: TreeNode) -> int:
        res= []
        if not root:
            return 0;
        def dfs(root, depth):
            if not root.left and not root.right:
                res.append(copy.deepcopy(depth)+1);
                return
            if root.left:
                dfs(root.left, depth+1)
            if root.right:
                dfs(root.right, depth+1)
        dfs(root, 0)
        return min(res)

時(shí)間復(fù)雜度:O(N):N是節(jié)點(diǎn)的個(gè)數(shù)。
空間復(fù)雜度:O(H):H是樹(shù)的高度。最壞情況是二叉樹(shù)為單鏈表狀時(shí),空間復(fù)雜度為O(N),平均情況為樹(shù)的高度O(H) = O(logN)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容