LeetCode 二叉樹的直徑

2021-09-17 21:16:35 字數 1052 閱讀 6432

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

示例 :

給定二叉樹

1/ \

2 3

/ \

4 5

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

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

思路分析:編寫乙個函式求以當前節點為起始端的最長路徑長,根據遞迴特性,先求以左子樹為起始端的最長路徑長leftlen、右子樹為起始端的最長路徑長rightlen,然後更新 maxres最長路徑長 = max(maxres, leftlen + rightlen)(代表的意義是左子樹+root+右子樹組合最長路徑

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

//計算以root為起始點的最長路徑

intmaxlen

(treenode* root)

//遞迴求左子樹、右子樹

int leftlen =

maxlen

(root-

>left)

, rightlen =

maxlen

(root-

>right)

; maxres =

max(maxres, leftlen + rightlen)

;//左子樹+root+右子樹組合最長路徑

return

max(leftlen, rightlen)+1

;//返回root為起始點的最長路徑}}

LeetCode 二叉樹的直徑

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。示例 給定二叉樹 1 2 3 4 5返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。link.首先我們...

LeetCode 二叉樹的直徑

q 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。示例 給定二叉樹 1 2 3 4 5返回 3,它的長度是路徑 4,2,1,3 或者 5,2,1,3 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。a 對每個節點...

LeetCode 樹 二叉樹的直徑

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