牛客——把二叉树打印成多行

题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行
题解:
该题可参考上一篇博文,删除奇偶行判断,换成两个队列即可

class Solution {
public:
        vector<vector<int> > Print(TreeNode* pRoot) {
            vector<vector<int> > array;
            vector<int> line;
            queue<TreeNode*> Q1;
            queue<TreeNode*> Q2;
            TreeNode* tmp;
            
            if (pRoot==NULL)
                return array;
            
            Q1.push(pRoot);
            while (!Q1.empty())
            {
                line.clear();
                while (!Q1.empty())
                {
                    tmp = Q1.front();
                    line.push_back(tmp->val);
                    Q1.pop();
                    if (tmp->left)
                        Q2.push(tmp->left);
                    if (tmp->right)
                        Q2.push(tmp->right);
                }
                while (!Q2.empty())
                {
                    Q1.push(Q2.front());
                    Q2.pop();
                }
                array.push_back(line);
            }
            return array;
        }
};
发布了315 篇原创文章 · 获赞 119 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/w144215160044/article/details/104960842