力扣 543 二叉樹的直徑

2022-04-09 13:46:20 字數 756 閱讀 2928

求一棵二叉樹的直徑長度:任意兩個節點路徑長度中的最大值。

例子:

在這棵二叉樹中,直徑長度是3,路徑為[4 2 1 3]或者[5 2 1 3]。

從例子中我們可以看到,求二叉樹的直徑長度可以求左右子樹的深度,最後求和即可。

而求左右子樹的深度可以用深度優先搜尋dfs。這條路徑可能穿過也可能不穿過根結點

/**

* definition for a binary tree node.

* public class treenode

* } */

class

solution

res = 0;

subtreeheight(root);

return res-1;

}public

intsubtreeheight(treenode node)

int l =subtreeheight(node.left);  //求左子樹的節點個數

int r =subtreeheight(node.right);  //求右子樹的節點個數

res = math.max(res, l+r+1);  //路徑是否穿過當前節點(max比較一下)

return math.max(l, r) + 1;  //當前節點的到葉子節點的最大深度}}

543 二叉樹的直徑 力扣

題意理解 求二叉樹從乙個葉子到另乙個葉子的路徑最大值,必然經過根節點 問題分析 遞迴先計算子樹的深度,然後用左右子樹深度和 1 其他最大子樹不一定經過根結點。可以是任意乙個子樹的最大直徑。鏈結int diameterofbinarytree treenode root void helper tre...

力扣 543 二叉樹的直徑

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

力扣 543 二叉樹的直徑

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