圖解LeetCode——543. 二叉樹的直徑

一栏笆、題目

給你一棵二叉樹的根節(jié)點(diǎn)朽合,返回該樹的 直徑 鉴裹。

二叉樹的 直徑 是指樹中任意兩個(gè)節(jié)點(diǎn)之間最長路徑的 長度 。這條路徑可能經(jīng)過也可能不經(jīng)過根節(jié)點(diǎn) root 廷没。

兩節(jié)點(diǎn)之間路徑的 長度 由它們之間邊數(shù)表示糊饱。

二、示例

2.1> 示例 1:

輸入】root = [1,2,3,4,5]
輸出】3
解釋】3 颠黎,取路徑 [4,2,1,3] 或 [5,2,1,3] 的長度另锋。

2.2> 示例 2:

輸入】root = [1,2]
輸出】1

提示:

  • 樹中節(jié)點(diǎn)數(shù)目在范圍 [1, 10^4] 內(nèi)
  • -100 <= Node.val <= 100

三、解題思路

根據(jù)題目描述狭归,我們要獲得二叉樹中任意兩個(gè)節(jié)點(diǎn)的最大直徑夭坪。那么如何確定哪兩個(gè)節(jié)點(diǎn)是值得去進(jìn)行計(jì)算的?或者那兩個(gè)節(jié)點(diǎn)我們應(yīng)該去進(jìn)行計(jì)算过椎。以一個(gè)3節(jié)點(diǎn)的子樹為例室梅,分為:根節(jié)點(diǎn)(rootNode)、左子節(jié)點(diǎn)(leftNode)和右子節(jié)點(diǎn)(rightNode)疚宇,那么leftNoderootNode的距離和rootNoderightNode的距離其實(shí)沒有必要參與最大直徑的計(jì)算竞惋,因?yàn)?code>leftNode到rightNode的距離一定傾向是最大直徑。所以灰嫉,我們得出一個(gè)結(jié)論:

可能的最大直徑 = leftNode到rootNode的距離 + rootNode到rightNode的距離拆宛;

那么,因?yàn)槎鏄湟膊⒉恢挥?個(gè)節(jié)點(diǎn)讼撒,如果節(jié)點(diǎn)很多的話浑厚,那么這個(gè)二叉樹的層級也就會(huì)越深,那么下面我們其實(shí)如果能找到leftNode到rootNode距離的最大值(或最深路徑)以及找到rootNode到rightNode距離的最大值(或最深路徑)根盒,那么相加必然就是本題所要求解的最大直徑了钳幅。

那么針對樹形結(jié)構(gòu)的解題,最常用的方式就是遞歸算法了炎滞,從葉子節(jié)點(diǎn)開始統(tǒng)計(jì)敢艰,一直統(tǒng)計(jì)到根節(jié)點(diǎn),并且每次都要進(jìn)行直徑的計(jì)算和比較册赛,當(dāng)遍歷到根節(jié)點(diǎn)時(shí)钠导,最大直徑也就計(jì)算出來了震嫉。

以上就是本題的解題思路,為了便于大家更加深入的理解牡属,下面我們以輸入root = [1,2,3,4,5]為例票堵,看一下是如何進(jìn)行最大直徑計(jì)算的(圖中省略了根節(jié)點(diǎn)的深度和直徑的計(jì)算,大家自行腦補(bǔ)即可)逮栅,請見下圖所示:

四悴势、代碼實(shí)現(xiàn)

class Solution {
    int diameter = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        depth(root);
        return diameter;
    }
    public int depth(TreeNode node) {
        if (node == null) return 0;
        int leftLen = depth(node.left); // node左子樹最大深度
        int rightLen = depth(node.right); // node右子樹最大深度
        diameter = Math.max(diameter, leftLen + rightLen); // 對比直徑
        return Math.max(leftLen, rightLen) + 1; // 獲得最大深度
    }
}
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

今天的文章內(nèi)容就這些了:

寫作不易,筆者幾個(gè)小時(shí)甚至數(shù)天完成的一篇文章措伐,只愿換來您幾秒鐘的 點(diǎn)贊 & 分享 特纤。

更多技術(shù)干貨,歡迎大家關(guān)注公眾號“爪哇繆斯” ~ \(o)/ ~ 「干貨分享侥加,每天更新」

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捧存,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子官硝,更是在濱河造成了極大的恐慌矗蕊,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氢架,死亡現(xiàn)場離奇詭異傻咖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)岖研,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門卿操,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人孙援,你說我怎么就攤上這事害淤。” “怎么了拓售?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵窥摄,是天一觀的道長。 經(jīng)常有香客問我础淤,道長崭放,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任鸽凶,我火速辦了婚禮币砂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玻侥。我一直安慰自己决摧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掌桩,像睡著了一般边锁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拘鞋,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天砚蓬,我揣著相機(jī)與錄音矢门,去河邊找鬼盆色。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祟剔,可吹牛的內(nèi)容都是我干的隔躲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼物延,長吁一口氣:“原來是場噩夢啊……” “哼宣旱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叛薯,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤浑吟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后耗溜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體组力,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年抖拴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了燎字。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阿宅,死狀恐怖候衍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情洒放,我是刑警寧澤蛉鹿,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站往湿,受9級特大地震影響妖异,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜煌茴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一随闺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔓腐,春花似錦矩乐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽分歇。三九已至,卻和暖如春欧漱,著一層夾襖步出監(jiān)牢的瞬間职抡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工误甚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缚甩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓窑邦,卻偏偏與公主長得像擅威,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子冈钦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 思想 二叉樹的核心思想是分治和遞歸郊丛,特點(diǎn)是遍歷方式。解題方式常見兩類思路: 遍歷一遍二叉樹尋找答案瞧筛; 通過分治分解...
    Sisyphus235閱讀 103評論 0 1
  • 給定一棵二叉樹厉熟,你需要計(jì)算它的直徑長度。一棵二叉樹的直徑長度是任意兩個(gè)結(jié)點(diǎn)路徑長度中的最大值较幌。這條路徑可能穿過根結(jié)...
    桐桑入夢閱讀 209評論 0 0
  • 題目描述 給定一棵二叉樹揍瑟,你需要計(jì)算它的直徑長度。一棵二叉樹的直徑長度是任意兩個(gè)結(jié)點(diǎn)路徑長度中的最大值绅络。這條路徑可...
    書瓖果fifty閱讀 372評論 0 0
  • 題目 給定一棵二叉樹月培,你需要計(jì)算它的直徑長度。一棵二叉樹的直徑長度是任意兩個(gè)結(jié)點(diǎn)路徑長度中的最大值恩急。這條路徑可能穿...
    唐三斤閱讀 78評論 0 0
  • 題目描述 給定一棵二叉樹杉畜,你需要計(jì)算它的直徑長度。一棵二叉樹的直徑長度是任意兩個(gè)結(jié)點(diǎn)路徑長度中的最大值衷恭。這條路徑可...
    topshi閱讀 637評論 0 1