forked from ccgcv/Cplus-plus-for-hacktoberfest
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmax_width_trees.cpp
More file actions
34 lines (28 loc) · 966 Bytes
/
max_width_trees.cpp
File metadata and controls
34 lines (28 loc) · 966 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
public:
int widthOfBinaryTree(TreeNode* root) {
if(root==NULL) return 0;
int ans=0;
queue<pair<TreeNode*,int>> q;
q.push({root,0});
// vector <int> a;
while(!q.empty()){
int size = q.size();
int min = q.front().second;
int first,last;
for(int i=0;i<size;i++){
long cur_id =q.front().second-min;
TreeNode * node = q.front().first;
q.pop();
if(i==0) first = cur_id;
if(i==size-1) last=cur_id;
if(node->left)
q.push({node->left,cur_id*2+1});
if(node->right)
q.push({node->right,cur_id*2+2});
}
ans = max(ans,last-first+1);
}
return ans;
}
};