题解 | #二叉树的之字形层序遍历# (获取队列长度入队)

二叉树的之字形层序遍历

http://www.nowcoder.com/practice/47e1687126fa461e8a3aff8632aa5559

  1. 用队列实现二叉树层次遍历。
  2. 同时设置一个flag标记, 来判断二叉树该一层节点的值是否翻转。
  3. 用stl中reverse函数翻转vector数组
  4. 使用异或, 实现flag一次是0,一次是1,来回变化。
    ```
    class Solution {
    public:
    vector<vector<int> > zigzagLevelOrder(TreeNode* root) {
     vector<vector<int> > ans;
     if(!root) return ans;
     queue<treenode*> q;
     q.push(root);
     int flag = 0; // 初始化为0,第一层不翻转
     while(!q.empty()){
         int size = q.size();
         vector<int> tmp;
         while(size--){
             TreeNode *r = q.front();
             q.pop();
             tmp.push_back(r->val);
             if(r->left) q.push(r->left);
             if(r->right) q.push(r->right);
         }
         if(flag) reverse(tmp.begin(), tmp.end());
         ans.push_back(tmp);
         flag = flag^1; // 使flag 0,1变化。
     }
     return ans;
    }
    };
    ```</int></treenode*></vector<int></vector</int>
全部评论

相关推荐

服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
10-13 17:47
门头沟学院 Java
wulala.god:图一那个善我面过,老板网上找的题库面的
点赞 评论 收藏
分享
totoroyyw:千年老妖😂
投递华为等公司10个岗位
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务