leetcode 662 二叉樹最大寬度

2021-10-09 10:36:23 字數 1419 閱讀 3733

給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹(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)。

public class widthofbinarytree 

public int widthofbinarytree(treenode root)

/*** deque結構提供了peekfirst和peeklast方法,這是解題所需要的,所以放棄了使用queue結構

* 而且總體來說,deque提供的方法和結構包含了queue和stack,使用起來更方便

*/dequequeue = new linkedlist<>();

queue.offer(new node(root, 1));

int ans = 0;

while (!queue.isempty())

if (cur.node.right != null) }}

return ans;

}}class node

}class treenode

treenode(int val)

treenode(int val, treenode left, treenode right)

}

總結: 使用bfs  廣度優先搜尋,題目需求求解那層個數最多,就可以利用佇列獲取每層首個元素與最後個元素,利用表示式(end - first)+1 為每層個數 -- 核心思想

LeetCode 662 二叉樹最大寬度

給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。示例 1 輸入 1 3 2 5 3...

LeetCode662 二叉樹最大寬度

給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。示例 1 輸入 1 3 2 5 3...

Leetcode 662 二叉樹最大寬度 C

給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。示例 1 輸入 1 3 2 5 3...