leetcode - Binary Tree Zigzag Level Order Traversal
2013-03-05 21:24 张汉生 阅读(176) 评论(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> > zigzagLevelOrder(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 int flag = 1; 43 vector<vector<int>>::iterator vii; 44 vector<int>::iterator ii; 45 for (vii = rlt.begin(); vii!=rlt.end();vii++){ 46 if (flag ==0){ 47 vi = vector<int>(); 48 for (ii=(*vii).end()-1; ii+1 !=(*vii).begin(); ii--) 49 vi.push_back(*ii); 50 real_rlt.push_back(vi); 51 } 52 else { 53 real_rlt.push_back(*vii); 54 } 55 flag = 1 - flag; 56 } 57 return real_rlt; 58 } 59 };