系列文章題目題目鏈結→→二叉樹的直徑 分析leetcode系列1、兩數相加
根據題目的描述,可以簡單理解為找到左右子樹的最大深度,最大深度的兩個節點之間的距離即為直徑。換個思路,也就是二叉樹運算中,求左右子樹的最大深度。如圖1所示:
從上圖可以看出,以根節點a為中心,可以計算出最大深度為:
d→b→a→c→f
e→b→a→c→f
即最大直徑為4。以上適用於類似平衡二叉樹的結構分析,以根節點為對稱軸,分別求最大深度即可。
進一步分析,如果二叉樹不是平衡二叉樹,結果如圖2所示:
即最大直徑為4。
再思考,有沒有可能是二叉樹的子樹中即可以得到最大直徑呢?如下圖所示:
很明顯,根節點a的子樹b是最大直徑的基準點。當前二叉樹直接可以表示為:
h→f→d→b→e→g
i →f→d→b→e→g
即最大直徑為5,是以子樹b為基準得到的最大直徑。
基於上述分析,給出演算法實現。
**示例
總結
二叉樹系列五 求二叉樹的寬度
二叉樹的寬度是指二叉樹各層結點個數的最大值。求二叉樹的寬度可以依據與二叉樹的層次遍歷,我們知道,二叉樹的層次遍歷借助於deque實現,每次列印當前結點後將其左子樹右子樹入隊,此時佇列中既包含當前層的結點,也包含下一層的結點,若我們將當前層的結點全部出隊,剩餘的就是下一層的結點個數。所以,我們可以使用...
leetcode 二叉樹 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...
LeetCode (二叉樹)反轉二叉樹
遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...