按之字形顺序打印二叉树

按之字形顺序打印二叉树

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;
     }
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务