給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹(full binary tree)結構相同,但一些節點為空。
每一層的寬度被定義為兩個端點(該層最左和最右的非空節點,兩端點間的null
節點也計入長度)之間的長度。
示例 1:
輸入:示例 2:1/ \
3 2
/ \ \
5 3 9
輸出: 4
解釋: 最大值出現在樹的第 3 層,寬度為 4 (5,3,null,9)。
輸入:示例 3:1/
3
/ \
5 3
輸出: 2
解釋: 最大值出現在樹的第 3 層,寬度為 2 (5,3)。
輸入:示例 4:1/ \
3 2
/
5
輸出: 2
解釋: 最大值出現在樹的第 2 層,寬度為 2 (3,2)。
輸入:注意: 答案在32位有符號整數的表示範圍內。1/ \
3 2
/ \
5 9
/ \
6 7
輸出: 8
解釋: 最大值出現在樹的第 4 層,寬度為 8 (6,null,null,null,null,null,null,7)。
/** * definition for a binary tree node.
* struct treenode
* }; */
/*演算法思想:
迭代的方法,採用層序遍歷,注意這裡使用了佇列queue來輔助運算,queue裡存的是乙個pair,包括結點和其當前位置。在進入新一層的迴圈時,首先將首結點的位置儲存出來當作最左位置,然後對於遍歷到的結點,都更新右結點的位置,遍歷一層的結點後來計算寬度更新結果res。
*///
演算法實現:
class
solution );
while (!q.empty()) );
if (t->right) //
如果右子樹存在,end*2+1
q.push();
}res = max(res, end - begin + 1); //
求每層的寬度最大值
}
return
res;
}};
LeetCode 662 二叉樹最大寬度
給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。示例 1 輸入 1 3 2 5 3...
leetcode 662 二叉樹最大寬度
給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。示例 1 輸入 1 3 2 5 3...
Leetcode 662 二叉樹最大寬度 C
給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。示例 1 輸入 1 3 2 5 3...