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