zoukankan      html  css  js  c++  java
  • 111. 二叉树的最小深度(层次遍历—使用队列迭代)

    111. 二叉树的最小深度

    题目链接: 111. 二叉树的最小深度(简单)

    题目描述

    给定一个二叉树,找出其最小深度。

    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

    说明:叶子节点是指没有子节点的节点。

    示例 1:

    输入:root = [3,9,20,null,null,15,7]
    输出:2

    示例 2:

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

    提示:

    • 树中节点数的范围在 [0, 105]

    • -1000 <= Node.val <= 1000

    题解

    思路:二叉树的深度就是它的层数,此题要求的是二叉树的最小深度,通过分析可以发现:当一个节点的左右孩子都为空时(该节点为叶子节点),最达到最小深度了。

    代码(C++):

    struct TreeNode {
        int val;
        TreeNode* left;
        TreeNode* right;
        TreeNode* next;
        TreeNode(int value) : val(value), left(nullptr), right(nullptr), next(nullptr) {}
    };
    ​
    class Solution {
    public:
        int minDepth(TreeNode* root) {
            queue<TreeNode*> que;
            if (root != nullptr) que.push(root);
            int minlevel = 1;
            while (!que.empty()) {
                int size = que.size();
                for (int i = 0; i < size; i++) {
                    TreeNode* node = que.front();
                    que.pop();
                    if (node->left == nullptr && node->right == nullptr) return minlevel;
                    if (node->left) que.push(node->left);
                    if(node->right) que.push(node->right);
                }
                minlevel += 1;
            }
            return minlevel - 1;
        }
    };

    代码(Java):

    class Solution {
        public int minDepth(TreeNode root) {
            Deque<TreeNode> que = new LinkedList<>();
            if (root != null) que.offer(root);
            int minlevel = 1;
            while (!que.isEmpty()) {
                int size = que.size();
                for (int i = 0; i < size; i++) {
                    TreeNode node = que.poll();
                    if (node.left == null && node.right == null) return minlevel;
                    if (node.left != null) que.offer(node.left);
                    if (node.right != null) que.offer(node.right);
                }
                minlevel += 1;
            }
            return minlevel - 1;
        }
    }

    分析:

    • 时间复杂度:O(N)

    • 空间复杂度:O(N)

  • 相关阅读:
    32.ExtJS简单的动画效果
    set、env、export差分
    【翻译】Why JavaScript Is and Will Continue to Be the First Choice of Programmers
    J2EE请求和响应—Servlet
    Leetcode: Spiral Matrix. Java
    Android正在使用Handler实现信息发布机制(一)
    Android开发工具综述,开发人员必备工具
    Android 从硬件到应用程序:一步一步爬上去 5 -- 在Frameworks蒂姆层硬件服务
    HDU 2828 DLX搜索
    2016第三周三
  • 原文地址:https://www.cnblogs.com/wltree/p/15614619.html
Copyright © 2011-2022 走看看