LeetCode 二叉樹的直徑

2021-10-04 23:47:37 字數 874 閱讀 7360

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

示例 :

給定二叉樹

1

/ \2 3

/ \

4 5

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

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

link.

首先我們知道一條路徑的長度為該路徑經過的節點數減一,所以求直徑(即求路徑長度的最大值)等效於求路徑經過節點數的最大值減一。

而任意一條路徑均可以被看作由某個節點為起點,從其左兒子和右兒子向下遍歷的路徑拼接得到。

/**

* definition for a binary tree node.

* public class treenode

* }*/ class solution

public int depth(treenode node)

int left = depth(node.left); // 左兒子為根的子樹的深度

int right = depth(node.right);// 右兒子為根的子樹的深度

maxd=math.max(left+right,maxd);//將每個節點最大直徑(左子樹深度+右子樹深度)當前最大值比較並取大者

return math.max(left,right)+1;//返回節點深度

}}

4.複雜度:

時間複雜度:o(n)。

空間複雜度:o(height)。

LeetCode 二叉樹的直徑

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

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 注意 兩結點之間的路徑長度是以它們之間邊的數目表示。乙個二叉樹的直徑...