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); 13 14 if (node->left) { 15 sum += node->left->val; 16 q.push(node->left); 17 } 18 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 };