刷題39 二叉樹的直徑 力扣)

2021-10-03 17:59:16 字數 1003 閱讀 6231

題目鏈結題目描述

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

示例 :

給定二叉樹1/

2 3/ \

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

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

關鍵技術

dfs 遞迴法

題目分析

樹的直徑=左子樹深度+右子樹深度;

經過乙個node,其左右子樹的最大深度之和 + 1(二叉樹的根節點深度為0)

使用 dfs,找出所有節點的最大直徑,再取出最大值 res;

定義乙個遞迴函式depth(node),呼叫depth函式,找出以 root 為根節點的二叉樹的最大深度

/**

* definition for a binary tree node.

* function treenode(val)

*//**

* @param root

* @return

*/var

diameterofbinarytree

=function

(root)

let left =

depth

(node.left)

;let right =

depth

(node.right)

; res = math.

max(res, left + right)

;return math.

max(left, right)+1

;}depth

(root)

;return res;

};

二叉樹 力扣刷題

把二叉樹上的每乙個節點的左右子節點進行交換 definition for a binary tree node.public class treenode class solution 給定乙個 完美二叉樹 其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下 struct node ...

力扣刷題 合併二叉樹

題目描述 給定兩個二叉樹,想象當你將它們中的乙個覆蓋到另乙個上時,兩個二叉樹的一些節點便會重疊。你需要將他們合併為乙個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作為節點合併後的新值,否則不為 null 的節點將直接作為新二叉樹的節點。算是第一次正式用力扣刷題,思路上是有想法的,但回...

543 二叉樹的直徑 力扣

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