二叉樹的最小深度


二叉樹的最小深度

給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。

示例

給定二叉樹[3,9,20,null,null,15,7]

    3
   / \
  9  20
    /  \
   15   7

題解

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var minDepth = function(root) {
    if(!root) return 0;
    if(root.left === null && root.right !== null) return minDepth(root.right) + 1;
    if(root.right === null && root.left !== null) return minDepth(root.left) + 1;
    var lh = minDepth(root.left);
    var rh = minDepth(root.right);
    return Math.min(lh, rh) + 1;
};

思路

使用深度優先搜索的方法,遍歷整棵樹對比最小高度的子樹並記錄,返回最小高度子樹的高度,對於每一個非葉子節點,只需要分別計算其左右子樹的最小葉子節點深度即可,注意題目中定義最小深度是從根節點到最近葉子節點的最短路徑上的節點數量,且葉子節點是指沒有子節點的節點,所以有兩個節點的二叉樹的最小深度是2。首先如果節點沒有定義,那么就認為其高度為0並返回0,對於題目中的要求最小深度是從根節點到最近葉子節點的最短路徑上的節點數量,所以在左子樹不存在右子樹存在的情況下,返回右子樹的最小深度+1,如果在右子樹不存在左子樹存在的情況下,返回左子樹的最小深度+1,然后取得左子樹的最小深度與右子樹的最小深度,比較大小,返回較小子樹深度+1

每日一題

https://github.com/WindrunnerMax/EveryDay

參考

https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM