2
void dft(TreeNode *root, int level, map<int, vector<int>, std::greater<int>> &levelVals) {3
if (root == nullptr) return;5
if (levelVals.find(level) == levelVals.end())6
levelVals[level] = {root->val};8
levelVals[level].push_back(root->val);10
dft(root->left, level + 1, levelVals);11
dft(root->right, level + 1, levelVals);15
vector<vector<int>> levelOrderBottom(TreeNode *root) {16
map<int, vector<int>, std::greater<int>> levelVals;17
dft(root, 0, levelVals);19
vector<vector<int>> res;20
for (const auto &[level, vals] : levelVals) res.push_back(vals);