LeetCode662 二叉樹最大寬度

2022-06-27 09:45:14 字數 1364 閱讀 7251

給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹(full binary tree)結構相同,但一些節點為空。

每一層的寬度被定義為兩個端點(該層最左和最右的非空節點,兩端點間的null節點也計入長度)之間的長度。

示例 1:

輸入: 

1/ \

3 2

/ \ \

5 3 9

輸出: 4

解釋: 最大值出現在樹的第 3 層,寬度為 4 (5,3,null,9)。

示例 2:

輸入: 

1/

3

/ \

5 3

輸出: 2

解釋: 最大值出現在樹的第 3 層,寬度為 2 (5,3)。

示例 3:

輸入: 

1/ \

3 2

/

5

輸出: 2

解釋: 最大值出現在樹的第 2 層,寬度為 2 (3,2)。

示例 4:

輸入: 

1/ \

3 2

/ \

5 9

/ \

6 7

輸出: 8

解釋: 最大值出現在樹的第 4 層,寬度為 8 (6,null,null,null,null,null,null,7)。

注意: 答案在32位有符號整數的表示範圍內。

/*

* * 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...