`
frank-liu
  • 浏览: 1685088 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: Minimum Depth of Binary Tree

 
阅读更多

问题描述:

Given a binary tree, find its minimum depth.

The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

原问题链接:https://leetcode.com/problems/minimum-depth-of-binary-tree/

 

问题分析

  粗看起来,这个问题比较简单,因为要求的是二叉树的最短长度,那么只要找到它到叶节点的最近的距离就可以了。而这里可以很容易的得到一个递归的关系,就是minDepth(root) = Math.min(minDepth(root.left), minDepth(root.right)) + 1;

  于是我们可以得到如下的代码:

 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int minDepth(TreeNode root) {
        if(root == null) return 0;
        return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
    }
}

   在实际运行的时候却提示结果错误了。这里还有一个额外的要求,就是因为要找一个到叶节点的最近距离。在一些特殊的情况下,比如根节点的某个子树为空或者两个子树都是空,那么我们要啊返回的结果就不一样。我们必须要尽量找到那个有叶子节点的一边,而不是纯找最短的路径。把这两个条件考虑在内之后。

  于是我们可以得到如下的代码:

 

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int minDepth(TreeNode root) {
        if(root == null) return 0;
        int a = minDepth(root.left);
        int b = minDepth(root.right);
        if(a + b == 0) return 1;
        if(a * b == 0) return a + b + 1;
        return Math.min(a, b) + 1;
    }
}

 

 

1
1
分享到:
评论

相关推荐

    java-leetcode-111-minimum-depth-of-binary-tree

    java java_leetcode-111-minimum-depth-of-binary-tree

    python-leetcode题解之111-Minimum-Depth-of-Binary-Tree

    python python_leetcode题解之111_Minimum_Depth_of_Binary_Tree

    minimum-depth-of-binary-tree.rar_leetcode

    在提供的"minimum depth of binary tree"代码中,可能包含了上述的一种或多种解冑策略。解冑代码应该能够处理各种类型的二叉树,包括平衡树和高度不均衡的树,同时具有良好的时间复杂度和空间复杂度。具体实现细节和...

    js-leetcode题解之111-minimum-depth-of-binary-tree.js

    javascript js_leetcode题解之111-minimum-depth-of-binary-tree.js

    LeetCode:LeetCode解决方案

    LeetCodeLeetCode solutions(Java)树Minimum Depth of Binary Tree栈evaluate-reverse-polish-notation穷举max-points-on-a-line链表sort-list排序insertion-sort-list树binary-tree-postorder-traversal树binary-...

    最大公共字符串leetcode-leetcode:坚持每周刷一道LeetCode题

    最大公共字符串leetcode leetcode刷题打卡 接下来,坚持每周至少刷一道LeetCode题,刷题顺利按照牛客网LeetCode经典题目顺序进行,记录解题思路,与大家共享,同时也做个自我监督 第一周 1、树 题目: Given a ...

    LeetCode判断字符串是否循环-leetcode:用lin编码

    LeetCode判断字符串是否循环 leetcode Coding with Lin on 1. Minimum Depth of Binary Tree(111) 二叉树的遍历包括: 前序遍历 中序遍历 后序遍历 层次遍历 Points: 采用中序遍历实现 若左右子树均不为空,返回...

    gasstationleetcode-leetcode-in-niuke:在牛客网上的在线编程中的leetcode在线编程题解

    binary-tree-postorder-traversal 树 binary-tree-preorder-traversal 链表 linked-list-cycle-ii 链表 linked-list-cycle 链表 copy-list-with-random-pointer 复杂度 single-number 动态规划 candy 贪心 gas-...

    Leetcode book刷题必备

    27. Minimum Depth of Binary Tree:计算二叉树的最小深度。 28. Balanced Binary Tree:判断一个二叉树是否是平衡二叉树。 29. Convert Sorted Array to Balanced Binary Search Tree:将有序数组转换成平衡的二叉...

    leetcode下载-ARTS-:ARTS打卡

    leetcode下载 ARTS- ARTS打卡 Algorithm Leetcode -111 Minimum Depth of Binary Tree 本题的要求是给一个二叉树,返回这个二叉树的最小层级 Tips Tmux 基本操作: prefix := Ctrl+B session相关操作 查看/切换...

    LeetCode最全代码

    * [Binary Search Tree](https://github.com/kamyu104/LeetCode#binary-search-tree) * [Breadth-First Search](https://github.com/kamyu104/LeetCode#breadth-first-search) * [Depth-First Search]...

    Leetcode题目+解析+思路+答案.pdf

    - **Depth of Binary Tree**:计算二叉树的深度。 - **Construct Binary Tree**:根据给定的数组构建二叉树。 - **Binary Tree Level Order Traversal**:二叉树的层次遍历。 - **Symmetric Tree**:判断一个...

    leetcode分发糖果-LeetCodeAlgorithm:学习算法,LeetCode刷题,建议经典书籍《算法导论》《算法4》,使用C++和

    minimum_depth_binary_tree: twoSum: regularExpressionMathcing: sameTree: find_content_children: LeetCode 算法题 时间复杂度和空间复杂度权衡,时间复杂度的提升是以空间复杂度为代价的 仔细观察,LeetCode 上...

    LeetCode leetcode部分题解答代码实现

    * Depth of Binary Tree:给定一个二叉树,返回树的深度。这个题目需要使用递归的思想,将树分解成更小的子树,并找到最大深度。 * Construct Binary Tree:给定一个前序遍历的数组,构建二叉树。这个题目需要使用...

    常见算法题答案及解析

    27. Minimum Depth of Binary Tree:二叉树的最小深度。 28. Balanced Binary Tree:判断二叉树是否为平衡二叉树。 29. Convert Sorted Array to Binary Search Tree:将有序数组转换为高度平衡的二叉搜索树。 30. ...

    CleanCodeHandbook_v1.0.3

    6. BinaryTree(二叉树): 二叉树是每个节点最多有两个子节点的树数据结构,常用于组织数据,以便进行快速查找、插入和删除。文件中提到的二叉树相关题目包括: - Validate Binary Search Tree(验证二叉搜索树) ...

    maycope#Leetcode-Classic#1.1树的最小深度1

    1.1 树的最小深度Given a binary tree, find its minimum depth.The minimum depth is the n

    leetcode java

    - 计算二叉树的最大深度(Maximum Depth of Binary Tree)考察递归的使用。 - 平衡二叉树(Balanced Binary Tree)问题需要检查一棵树是否是平衡的。 **位操作(Bit Manipulation)** 位操作是高级的编程技能,涉及...

    leetcode官方50题算法详解

    1. **二叉树的最大深度(Maximum Depth of Binary Tree)**:递归计算二叉树的最大深度。 2. **将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree)**:利用有序数组的特点,通过递归构建...

Global site tag (gtag.js) - Google Analytics