&LeetCode111& 二叉樹的最小深度

題目

給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。

示例:
給定二叉樹 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最小深度 2.

來源:力扣(LeetCode

思路

首先,判斷是否爲空;
若當前結點不存在,直接返回0;
然後,若左子結點不存在,那麼對右子結點調用遞歸函數,並加1返回;
反之,若右子結點不存在,那麼對左子結點調用遞歸函數,並加1返回;
若左右子結點都存在,則分別對左右子結點調用遞歸函數,將兩者中的較小值加1返回即可。

C++代碼

class Solution {
public:
    int minDepth(TreeNode* root) 
    {
        if (!root)
            return 0;
        if (!root -> left)
            return minDepth(root -> right) + 1;
        if (!root -> right)
            return minDepth(root -> left) + 1;
        return 1 + min(minDepth(root -> left), minDepth(root -> right));
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章