按之字形顺序打印二叉树

按之字形顺序打印二叉树

http://www.nowcoder.com/questionTerminal/91b69814117f4e8097390d107d2efbe0

  1. 层次遍历打印二叉树,用队列实现。

    vector<vector<int> > Print(TreeNode* pRoot) {
         vector<vector<int>> res;    //存放结果
    
         if(pRoot == NULL) return res;
    
         queue<TreeNode*> q;
         q.push(pRoot);
    
         int flag = 0;  //用于判断是否需要反转存储
    
         while(!q.empty()){
             int level_size = q.size();    //每层vector大小            
             vector<int> path; path.resize(level_size);   
    
             for(int i = 0; i<level_size;i++){
                 TreeNode * tmp = q.front(); q.pop();
    
                 if(flag == 0){//不反转
                     path[i] = tmp->val;                    
                 }else{    //反转
                     path[level_size-1 - i] = tmp->val;                   
                 }
    
                 if(tmp->left) q.push(tmp->left);
                 if(tmp->right) q.push(tmp->right);                
             }
             res.push_back(path);
    
             //每层结束后需要反转
             if(flag == 0){flag = 1;}
             else flag = 0;            
         }
    
         return res;
     }
全部评论

相关推荐

06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务