代码改变世界

leetcode - Binary Tree Level Order Traversal II

2013-03-04 09:32  张汉生  阅读(228)  评论(0编辑  收藏  举报

题目描述:点击此处

 1 /**
 2   * Definition for binary tree
 3   * struct TreeNode {
 4   *     int val;
 5   *     TreeNode *left;
 6   *     TreeNode *right;
 7   *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8   * };
 9   */
10  class Solution {
11  public:
12      vector<vector<int> > levelOrderBottom(TreeNode *root) {
13          // Start typing your C/C++ solution below
14          // DO NOT write int main() function
15        vector<vector<int>> rlt;
16        if (root == NULL)
17          return rlt;
18        queue<TreeNode*> vt;
19        vector<int> vi;
20        vt.push(root);
21        vt.push(NULL);
22        TreeNode * node;
23        while(!vt.empty()){
24          node = vt.front();
25          if (node==NULL){
26            if (vi.size()>0){
27              rlt.push_back(vi);
28              vi = vector<int>();
29              vt.push(NULL);
30            }
31          }
32          else{
33            vi.push_back(node->val);
34            if (node->left != NULL)
35              vt.push(node->left);
36            if (node->right != NULL)
37              vt.push(node->right);
38          }
39          vt.pop();
40        }
41        vector<vector<int>> real_rlt;
42        vector<vector<int>>::iterator vii;
43        for (vii=rlt.end()-1; vii+1 != rlt.begin(); vii--){
44          real_rlt.push_back(*vii);
45        }
46        return real_rlt;
47      }
48  };