#include "leetcode.h" class Solution { public: vvd verticalTraversal(TreeNode *root) { map>> mmm; queue>> qpp; qpp.push({root, {0, 0}}); while (!qpp.empty()) { auto p = qpp.front(); qpp.pop(); TreeNode *node = p.first; int x = p.second.first, y = p.second.second; mmm[x][y].insert(node->val); if (node->left) qpp.push({node->left, {x - 1, y + 1}}); if (node->right) qpp.push({node->right, {x + 1, y + 1}}); } vvd ans; for (auto q : mmm) { vector col; for (auto p : q.second) col.insert(col.end(), p.second.begin(), p.second.end()); ans.push_back(col); } return ans; } };