美文网首页一起来刷算法题
按之字形顺序打印二叉树

按之字形顺序打印二叉树

作者: cherryleechen | 来源:发表于2019-05-07 13:16 被阅读0次

    时间限制:1秒 空间限制:32768K

    题目描述

    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

    我的代码

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    */
    class Solution {
    public:
        vector<vector<int> > Print(TreeNode* pRoot) {
            vector<vector<int>> res;
            if(pRoot==nullptr)
                return res;
            vector<TreeNode*> q1;
            q1.push_back(pRoot);
            vector<TreeNode*> q2;
            bool leftFirst=true;
            while(!q1.empty()){
                q2=q1;q1.clear();vector<int> row;
                while(!q2.empty()){
                    TreeNode* cur=q2.back();
                    q2.pop_back();
                    row.push_back(cur->val);
                    if(leftFirst){
                        if(cur->left)
                            q1.push_back(cur->left);
                        if(cur->right)
                            q1.push_back(cur->right);
                    }
                    else{
                        if(cur->right)
                            q1.push_back(cur->right);
                        if(cur->left)
                            q1.push_back(cur->left);
                    }
                }
                res.push_back(row);
                leftFirst=!leftFirst;
            }
            return res;
        }
    };
    

    运行时间:4ms
    占用内存:460k

    相关文章

      网友评论

        本文标题:按之字形顺序打印二叉树

        本文链接:https://www.haomeiwen.com/subject/qgykoqtx.html