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;     } };
 
  |