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 are also counted into the length calculation.
It is guaranteed that the answer will in the range of 32-bit signed integer.
Example 1:
**Input:** root = [1,3,2,5,3,null,9]
**Output:** 4
**Explanation:** The maximum width existing in the third level with the length 4 (5,3,null,9).
Example 2:
**Input:** root = [1,3,null,5,3]
**Output:** 2
**Explanation:** The maximum width existing in the third level with the length 2 (5,3).
Example 3:
**Input:** root = [1,3,2,5]
**Output:** 2
**Explanation:** The maximum width existing in the second level with the length 2 (3,2).
Example 4:
**Input:** root = [1,3,2,5,null,null,9,6,null,null,7]
**Output:** 8
**Explanation:** The maximum width existing in the fourth level with the length 8 (6,null,null,null,null,null,null,7).
Constraints:
The number of nodes in the tree is in the range [1, 3000].
-100 <= Node.val <= 100
ac1: DFS
Will overflow.
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */classSolution {publicintwidthOfBinaryTree(TreeNode root) {if (root ==null) return0;Map<Integer,int[]> map =newHashMap<>();helper(root,0,0, map);int max =Integer.MIN_VALUE;for (int[] v :map.values()) { max =Math.max(max, v[1] - v[0] +1); }return max; }publicvoidhelper(TreeNode node,int pos,int level,Map<Integer,int[]> map) {if (node ==null) return;if (!map.containsKey(level)) {map.put(level,newint[]{pos, pos}); }map.get(level)[0] =Math.min(map.get(level)[0], pos);map.get(level)[1] =Math.max(map.get(level)[1], pos);helper(node.left, pos *2, level+1, map);helper(node.right, pos *2+1, level+1, map); }}/*1) Map, record each level's start and end position; 2) careful: overflow, just initialize the value to the first met position
*/