Description:
Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
Example
Given binary tree {3,9,20,#,#,15,7},
3
/
9 20
/
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
分析:
思路:
Code:
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 35 36 37 38 39 40 41 42 43 44 45 46
|
class Solution {
public: vector<vector<int>> levelOrderBottom(TreeNode *root) { if (root == nullptr) return vector<vector<int> >(); vector<pair<TreeNode*,int> > q; int count = 0; int level = 1; q.push_back(make_pair(root, level)); while (count < q.size()) { TreeNode *p = q[count].first; level = q[count].second; if (p->left) q.push_back(make_pair(p->left, level + 1)); if (p->right) q.push_back(make_pair(p->right, level + 1)); count++; } vector<vector<int> > rs(level, vector<int>()); for (int i = 0; i < q.size(); i++) { rs[level-q[i].second].push_back(q[i].first->val); } return rs; } };
|