給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過根結點。
示例 :
給定二叉樹
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,...