Skip to content

Commit 59b1431

Browse files
committed
Time: 12 ms (26.80%), Space: 17.7 MB (6.42%) - LeetHub
1 parent 482ef63 commit 59b1431

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
unordered_map<unsigned long long int,unsigned long long int> minw, maxw;
14+
public:
15+
void dfs(TreeNode* root, unsigned long long int ht, unsigned long long int w){
16+
// base
17+
if(root == NULL)
18+
return;
19+
20+
// main
21+
if(minw.find(ht) == minw.end()){
22+
minw[ht] = w;
23+
maxw[ht] = w;
24+
}else{
25+
minw[ht] = min(minw[ht], w);
26+
maxw[ht] = max(maxw[ht], w);
27+
}
28+
29+
dfs(root->left, ht + 1, 2L * w);
30+
dfs(root->right, ht + 1, 2L * w + 1);
31+
}
32+
int widthOfBinaryTree(TreeNode* root) {
33+
dfs(root,0, 1);
34+
unsigned long long int ans = 0;
35+
for(auto x: minw){
36+
ans = max(ans, maxw[x.first] - minw[x.first] + 1);
37+
}
38+
39+
return ans;
40+
}
41+
};

0 commit comments

Comments
 (0)