Написано: 20.03.2023

111. Минимальная глубина бинарного дерева (Minimum Depth of Binary Tree)

easy

Задание.

Получено бинарное дерево, найдите его минимальную глубину.

Минимальная глубина – это количество узлов вдоль кратчайшего пути от корневого узла вниз до ближайшего конечного узла.

Примечание:* **Лист – это узел, не имеющий дочерних элементов.

Пример 1.

LeetCode-000111

Входные данные: 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 {
 *     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:
    bool isLeaf(TreeNode* node){
        return !node->left && !node->right;
    }
    int minDepth(TreeNode* root) {
        if(!root)   return 0;
        int result = 0;
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
            result++;
            int sz = q.size();
            for(int i=0;i<sz;i++){
                TreeNode* current = q.front(); q.pop();
                if((current->left && isLeaf(current->left)) || (current->right && isLeaf(current->right))){
                    return result+1;
                }
                if(current->left)   q.push(current->left);
                if(current->right)  q.push(current->right);
            }
        }
        return result;
    }
};