[劍指 Offer 55 - I. 二叉樹的深度] | 刷題打卡[5]

c9b440df07605539b510a39e5ceb6007.png

1、題目描述:

輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次通過的節點(含根、葉節點)造成樹的一條路徑,最長路徑的長度爲樹的深度。算法

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

3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。code

提示:
節點總數 <= 10000
遞歸

2、思路分析:

二叉樹的深度

二叉樹的深度:樹中的一個節點的深度是它到根節點的路徑上的邊的條數。(Robert Sedgewick和Kevin Wayne所著的《算法》第4版)rem

樹中某節點的高度是指從該節點到葉子節點的最長簡單路徑邊的條數。 樹的高度等於全部節點的最大深度(即樹的深度)。it

樹的深度

1. 一棵樹只有一個節點或沒有節點,它的深度是0;<br/>
2. 二叉樹的根節點只有左子樹而沒有右子樹,那麼能夠判斷,二叉樹的深度應該是其左子樹的深度加1;<br/>
3. 二叉樹的根節點只有右子樹而沒有左子樹,那麼能夠判斷,那麼二叉樹的深度應該是其右樹的深度加1;<br/>
4. 二叉樹的根節點既有右子樹又有左子樹,那麼能夠判斷,那麼二叉樹的深度應該是其左右子樹的深度較大值加1。<br/>io

3、AC 代碼:

var maxDepth = function(root) {
    //一個節點都沒有
    if(root===null){
        return 0
    }
    //只有一個根節點
    if(root.left===null && root.right===null){
        return 1
    }
    //遞歸左子樹
    let leftMax = maxDepth(root.left)
    //遞歸右子樹
    let rightMax = maxDepth(root.right)
    //返回左右子樹的深度較大值加1
    return Math.max(leftMax,rightMax)+1
};

4、總結:

1.本題考察對二叉樹深度的基本理解。什麼是樹的深度,以及樹深度的計算規則和技巧。function

相關文章
相關標籤/搜索