⭐️⭐️

# 題目敘述

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;
    }
}


單字

** **
!! !!

片語 & 搭配詞

!! !!