[劍指Offer]55-I 二叉樹的深度

輸入一棵二叉樹的根節(jié)點(diǎn),求該樹的深度。從根節(jié)點(diǎn)到葉節(jié)點(diǎn)依次經(jīng)過的節(jié)點(diǎn)(含根、葉節(jié)點(diǎn))形成樹的一條路徑,最長(zhǎng)路徑的長(zhǎng)度為樹的深度。

例如:

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

3
/ \
9 20
/ \
15 7

返回它的最大深度 3 。

提示:

  1. 節(jié)點(diǎn)總數(shù) <= 10000`

注意:本題與主站 104 題相同:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/

解題思路:簡(jiǎn)單

對(duì)于這道題來說,無非也是遞歸和非遞歸的想法。

思路1: 遞歸
遞歸的想法很簡(jiǎn)單,就是求得最深的一個(gè)樹的高度。如果當(dāng)前節(jié)點(diǎn)沒有子節(jié)點(diǎn)就是深度+1,如果有左節(jié)點(diǎn),就求左子樹的深度, 如果有右節(jié)點(diǎn)就求右子樹的深度,最后取左右子樹較深的一個(gè)。

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

思路2:非遞歸
這里用雙隊(duì)列法,基本思路就是用隊(duì)列Queue來存當(dāng)前節(jié)點(diǎn),用tmp 來存下一層的子節(jié)點(diǎn),遍歷結(jié)束后, 把下一層的節(jié)點(diǎn)集附給Queue繼續(xù)遍歷,深度+1,直到葉子節(jié)點(diǎn)。這種也算是廣度遍歷。

https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/solution/mian-shi-ti-55-i-er-cha-shu-de-shen-du-xian-xu-bia/

class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) return 0;
        List<TreeNode> queue = new LinkedList<>() {{ add(root); }}, tmp;
        int res = 0;
        while(!queue.isEmpty()) {
            tmp = new LinkedList<>();
            for(TreeNode node : queue) {
                if(node.left != null) tmp.add(node.left);
                if(node.right != null) tmp.add(node.right);
            }
            queue = tmp;
            res++;
        }
        return res;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目 給定一個(gè)二叉搜索樹, 找到該樹中兩個(gè)指定節(jié)點(diǎn)的最近公共祖先。 百度百科中最近公共祖先的定義為:“對(duì)于有根樹 ...
    炭燒熊貓閱讀 315評(píng)論 0 0
  • 題目描述: 給定一個(gè)二叉樹,找出其最小深度。最小深度是從根節(jié)點(diǎn)到最近葉子節(jié)點(diǎn)的最短路徑上的節(jié)點(diǎn)數(shù)量。 說明: 葉子...
    淌水希恩閱讀 276評(píng)論 0 0
  • 題目: 給定一個(gè)二叉樹,找出其最大深度。 二叉樹的深度為根節(jié)點(diǎn)到最遠(yuǎn)葉子節(jié)點(diǎn)的最長(zhǎng)路徑上的節(jié)點(diǎn)數(shù)。 說明: 葉子節(jié)...
    唧唧復(fù)唧唧丨閱讀 173評(píng)論 0 0
  • 樹 是一種經(jīng)常用到的數(shù)據(jù)結(jié)構(gòu),用來模擬具有樹狀結(jié)構(gòu)性質(zhì)的數(shù)據(jù)集合。樹里的每一個(gè)節(jié)點(diǎn)有一個(gè)根植和一個(gè)包含所有子節(jié)點(diǎn)的...
    Leo_Ye閱讀 472評(píng)論 0 0
  • 題目描述 https://leetcode-cn.com/problems/zhong-jian-er-cha-s...
    Hubhub閱讀 209評(píng)論 0 0

友情鏈接更多精彩內(nèi)容