leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
2641.cpp (1032B)
0 class Solution {
1 public:
2 TreeNode *replaceValueInTree(TreeNode *root) {
3 queue<TreeNode *> q({root});
4 vector<TreeNode *> buf;
5 root->val = 0;
6 while (!q.empty()) {
7 int sum = 0;
8 buf.clear();
9 for (int k = q.size(); k > 0; k--) {
10 TreeNode *node = q.front();
11 q.pop();
12 buf.push_back(node);
14 if (node->left) {
15 sum += node->left->val;
16 q.push(node->left);
17 }
19 if (node->right) {
20 sum += node->right->val;
21 q.push(node->right);
22 }
23 }
24 for (auto node : buf) {
25 int t = sum;
26 if (node->left) t -= node->left->val;
27 if (node->right) t -= node->right->val;
28 if (node->left) node->left->val = t;
29 if (node->right) node->right->val = t;
30 }
31 }
32 return root;
33 }
34 };