用dfs解决,不用队列也不用双栈。

按之字形顺序打印二叉树

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

vector<vector<int>>ans;
把line作为层号索引,从0开始,每次遍历到的值直接存到ans[line]就好了。
全部遍历完,如果line是奇数,把ans[line]逆序。</int>

 void getLine(TreeNode* root,int line,vector<vector<int>> &ans){//line是根层号
        if(root==NULL)
            return ;
        int size=ans.size();//判断此前是否已经有该行
         if(line==size){
             vector<int>temp;
             ans.push_back(temp);
         } 
      ans[line].push_back(root->val);
        int newline=line+1;
        getLine(root->left,newline,ans);
        getLine(root->right,newline,ans);
    }

逆序:假设i是行号:

 reverse(ans[i].begin(),ans[i].end());
全部评论

相关推荐

12-13 14:51
已编辑
井冈山大学 算法工程师
龙虾x:算法比你强的没有你美,比你美的…..算了已经没有比你美的了
工作两年想退休了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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