LeetCode 543 二叉樹的直徑

2021-10-12 16:29:17 字數 770 閱讀 7735

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

經過某個節點的路徑長度中的最大值,就是它的左子樹的高度 + 右子樹的高度。

遍歷所有的節點,取最大值,就是這個樹的直徑長度。

假設樹有 n 個節點。

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

private

void

dfs(treenode root)

int diameter =

depth

(root.left)

+depth

(root.right);if

(diameter > ans)

dfs(root.left)

;dfs

(root.right);}

private

intdepth

(treenode root)

int ldepth =

depth

(root.left)

;int rdepth =

depth

(root.right)

;return ldepth > rdepth ? ldepth +

1: rdepth +1;

}}

LeetCode 543 二叉樹的直徑

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

leetcode 543 二叉樹的直徑

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

Leetcode 543 二叉樹的直徑

題目描述 給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。思路 直徑長度 路徑的節點數 1 以每個節點為 根節點 的最長路徑,找出最大值。最長路徑上的節點數是 1 左子樹深度 右子樹深度 樹深度是1 max 左子樹深度,右子樹深度...