【剑指Offer】把二叉树打印成多行

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路:借助队列,每次打印完当前行,就把他们的子节点入队。队不空的时候一直做判断

由于每一行分开打印,所以每次外层循环时,算作打印一行,要记录队列中结点个数,然后依次存入数组中后再存入总结果。

class Solution {
public:
        vector<vector<int> > Print(TreeNode* pRoot) {
            vector<vector<int> > res;

            if(!pRoot)
                return res;

            queue<TreeNode*> que;

            que.push(pRoot);
            while (!que.empty()) {
                int low = 0, high = que.size();
                vector<int> row;
                while (low++ < high) {
                    TreeNode* q = que.front();
                    que.pop();
                    row.push_back(q->val);
                    if(q->left)
                        que.push(q->left);
                    if(q->right)
                        que.push(q->right);
                }
                res.push_back(row);
            }
            return res;
     }
};

本文链接:https://ariser.cn/index.php/archives/400/
本站文章采用 知识共享署名4.0 国际许可协议进行许可,请在转载时注明出处及本声明!