111. 二叉樹的最小深度

MegaBytes發表於2020-10-30

描述

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

提示:
樹中節點數的範圍在 [0, 105] 內
-1000 <= Node.val <= 1000

思路

104.二叉樹的最大深度差不多。每次當到達葉子結點時,判斷當前層數是否小於tmpMin。

結果太慘了:在這裡插入圖片描述

解答

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int tmpMin = 9999, i = 0;
    int minDepth(TreeNode* root) {
        if(root == nullptr) return 0;        
        if(root != nullptr){
            i++; 
            if(root->left == nullptr && root->right == nullptr){
                tmpMin = tmpMin>i?i:tmpMin; 
                i--;
                return tmpMin;        
            }
        }
        minDepth(root->left);
        minDepth(root->right);
        i--;
        return tmpMin;
    }
};

相關文章