LeetCode 二叉树的最小深度(minimum-depth-of-binary-tree)

1、主题

  • 难度:简单bash

  • 涉及知识:树、深度优先搜索、广度优先搜索函数

  • 题目地址:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/ui

  • 题目内容:spa

    给定一个二叉树,找出其最小深度。
    
    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
    
    说明: 叶子节点是指没有子节点的节点。
    
    示例:
    
    给定二叉树 [3,9,20,null,null,15,7],
    
        3
       / \
      9  20
        /  \
       15   7
    返回它的最小深度  2.
    复制代码

2、解题

  • 用例

    题目给定用例 [1,2,8,3,4,5,6,7]
    输入方法的root元数据:
    let root = {
        val: 1,
        left: {
            val: 2, left: null, right: null
        },
        right: {
            val: 3,
            left: {
                val: 4, left: null, right: {
                    val: 5,
                    left: {
                        val: 6, left: null, right: null
                    },
                    right: {
                        val: 7, left: null, right: null
                    }
                },
            },
            right: {
                val: 8, left: null, right: null
            }
        }
    };复制代码

  • 解题步骤

    var minDepth = function (root) {
        if (!root) {
            return 0;
        }
        //先遍历全部子节点,并比对各条路进行比对
        if (!root.left) {
            return minDepth(root.right) + 1;
        }
        if (!root.right) {
            return minDepth(root.left) + 1;
        }
        return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
    }复制代码

  • LeetCode Submit

    执行用时 :76 ms, 在全部 JavaScript 提交中击败了99.10%的用户内存消耗 :37.1 MB, 在全部 JavaScript 提交中击败了66.05%的用户复制代码

3、解析

  • 递归思路:

    1. 经过minDepth()方法遍历每条路径(优先从左子节点开始)
    2. 直到该路径到底(root.left 或 right为空),则会得到该路径的最大高度
    3. return进入Math.min()方法进行比对,取最小值
    4. 为什么要+1

  • Math:JS 中的内置对象,具备数学常数和函数的属性和方法。
  • Math.min() 详细介绍
相关文章
相关标签/搜索