LeetCode每日一題 二叉樹的直徑

2021-10-03 17:30:17 字數 786 閱讀 5408

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

示例 :

給定二叉樹

1

/ \2 3

/ \

4 5

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

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

坐了半天沒做對,最後才發現最長直徑不一定過根節點,必須比較所有內部節點的經過的直徑,取最大值。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

// 計算節點的深度,即左右子節點的最大的那乙個值

intmaxlength

(treenode* root)

int l =

maxlength

(root-

>left)

;int r =

maxlength

(root-

>right)

;// 每個節點都要計算左子樹和右子樹的深度的和,比較取最大值

max_ =

max(l+r, max_)

;return

max(l,r)+1

;}};

LeetCode每日一題114 二叉樹展開為鍊錶

題目 給定乙個二叉樹,原地將他展開為乙個鍊錶 單向,右指標 如圖 方法1 前序遍歷遞迴 class solution preorder root public treenode preorder treenode root if right node null return root 方法2 前序遍...

每日一題 重建二叉樹

題目 輸入某二叉樹的先序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的先序遍歷和中序遍歷的結果中都不含重複的數字。例如 前序遍歷序列 1,2,4,7,3,5,6,8 和中序遍歷序列 4,7,2,1,5,3,8,6 重建出下圖所示的二叉樹並輸出它的頭結點。param preorder 先序遍歷 p...

每日一題 平衡二叉樹

題目描述 給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1 示例1 輸入 root 3,9,20,null,null,15,7 輸出 true 示例2 輸入 root 1,2,2,3,3,null,null,...