DFS之二叉樹的直徑

2021-10-08 12:20:38 字數 930 閱讀 6809

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點

示例 :

給定二叉樹

1/ \

2 3

/ \

4 5

返回 3, 它的長度是路徑 [4,2,1,3] 或者 [5,2,1,3]。

注意:兩結點之間的路徑長度是以它們之間邊的數目表示。

思路:可以將二叉樹的直徑轉換為:二叉樹的 每個節點的左右子樹的高度和的最大值。

遍歷每乙個節點,以每乙個節點為中心點計算最長路徑(左子樹邊長+右子樹邊長),更新全域性變數max。

class

solution

:def

diameterofbinarytree

(self, root: treenode)

->

int:

ifnot root:

return

0 self.diam =

0 self.depth(root)

return self.diam

defdepth

(self, root):if

not root:

return

0 left = self.depth(root.left)

right = self.depth(root.right)

curr = left + right

if self.diam < curr:

self.diam = curr

return

max(left, right)

+1

二叉樹的直徑

題目 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。示例 給定二叉樹 返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。思想 我們不難發現這個問題的本質就是求每個...

二叉樹的直徑

題目 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。definition for a binary tree node.public class treenode class solution diameterofb...

二叉樹的直徑

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。示例 給定二叉樹 返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 概念理解 這條路徑可能穿過也可能不穿過根結點 任意一條路徑可由某結點為起點,再向下遍歷其...