⭐️⭐️
# 題目敘述
Given the root
of a binary tree, return the maximum width of the given tree.
The maximum width of a tree is the maximum width among all levels.
The width of one level is defined as the length between the end-nodes (the leftmost and rightmost non-null nodes), where the null nodes between the end-nodes that would be present in a complete binary tree extending down to that level are also counted into the length calculation.
It is guaranteed that the answer will in the range of a 32-bit signed integer.
# Example 1:
Input: root = [1,3,2,5,3,null,9]
Output: 4
Explanation: The maximum width exists in the third level with length 4 (5,3,null,9).
# Example 2:
Input: root = [1,3,2,5,null,null,9,6,null,7]
Output: 7
Explanation: The maximum width exists in the fourth level with length 7 (6,null,null,null,null,null,7).
# Example 3:
Input: root = [1,3,2,5]
Output: 2
Explanation: The maximum width exists in the second level with length 2 (3,2).
# 解題思路
# Solution
import javafx.util.Pair; | |
import java.util.ArrayDeque; | |
import java.util.Deque; | |
// Definition for a binary tree node. | |
public class TreeNode { | |
int val; | |
TreeNode left; | |
TreeNode right; | |
TreeNode() {} | |
TreeNode(int val) { this.val = val; } | |
TreeNode(int val, TreeNode left, TreeNode right) { | |
this.val = val; | |
this.left = left; | |
this.right = right; | |
} | |
} | |
class Solution { | |
public int widthOfBinaryTree(TreeNode root) { | |
if(root == null) return 0; | |
int ans = 0; | |
Deque<Pair<TreeNode, Integer>> deque = new ArrayDeque<>(); | |
deque.add(new Pair<>(root, 0)); | |
while(!deque.isEmpty()){ | |
int len = deque.size(); | |
int start = deque.peekFirst().getValue(); | |
int end = deque.peekLast().getValue(); | |
ans = Math.max(ans, end - start + 1); | |
for(int i = 0; i < len; i++){ | |
Pair<TreeNode, Integer> node = deque.pop(); | |
TreeNode curr = node.getKey(); | |
int index = node.getValue(); | |
if(curr.left != null) | |
deque.add(new Pair<>(curr.left, 2 * index)); | |
if(curr.right != null) | |
deque.add(new Pair<>(curr.right, 2 * index + 1)); | |
} | |
} | |
return ans; | |
} | |
} |
單字
** **
!! !!
片語 & 搭配詞
!! !!