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() 詳細介紹
相關文章
相關標籤/搜索