題目:
https://leetcode.com/problems/maximum-width-of-binary-tree/
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
| #define MAXN 3005 using ll = unsigned long long;
TreeNode* nodeq[MAXN]; ll indexq[MAXN];
class Solution { public: int widthOfBinaryTree(TreeNode* root) { ll ans = 1; int l = 0, r = 0; nodeq[r] = root; indexq[r++] = 1;
while(l < r){ ans = max(ans, indexq[r-1] - indexq[l] + 1); int size = r-l; for(int i=0; i<size; ++i){ TreeNode* curr = nodeq[l]; ll id = indexq[l++]; if(curr->left != nullptr){ nodeq[r] = curr->left; indexq[r++] = id*2; } if(curr->right != nullptr){ nodeq[r] = curr->right; indexq[r++] = id*2+1; } } } return ans; } };
|