https://leetcode.com/problems/maximum-width-of-binary-tree/description/
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
#define LL long long
void dfs(TreeNode* r, int depth, LL cur_pos, vector<LL>& left, vector<LL>& right)
{
if(r==NULL) return;
if(left.size()==depth) left.push_back(cur_pos);
if(right.size()==depth) right.push_back(cur_pos);
right[depth] = cur_pos;
dfs(r->left, depth+1, cur_pos*2, left, right);
dfs(r->right, depth+1, cur_pos*2+1, left, right);
}
int widthOfBinaryTree(TreeNode* root) {
vector<LL> left, right;
dfs(root, 0, 1, left, right);
int n = min(l