序列化二叉树,但是行输出时从左到右从右到左交替进行。
class Solution { public: enum Direciton {left,right}; vector<vector<int> > zigzagLevelOrder(TreeNode <em>root) { vector<vector<int>> result; result.clear(); vector<TreeNode</em>> seq,seq_c; seq.clear(); if(root != NULL)seq.push_back(root); Direciton direction = left; while(seq.size() > 0) { seq_c.clear(); vector<int>item; item.clear(); if(direction == left) { direction = right; for(int i = 0; i < seq.size();i++) { item.push_back(seq[i]->val); if(seq[i]->left != NULL) { seq_c.push_back(seq[i]->left); } if(seq[i]->right != NULL) { seq_c.push_back(seq[i]->right); } } } else { direction = left; for(int i = seq.size()-1; i >= 0;i--) { item.push_back(seq[i]->val); } for(int i = 0; i < seq.size();i++) { if(seq[i]->left != NULL) { seq_c.push_back(seq[i]->left); } if(seq[i]->right != NULL) { seq_c.push_back(seq[i]->right); } } } result.push_back(item); seq = seq_c; } return result; } };