跳至主要內容

60.Print_Binary_Tree_into_Multiple_lines

荒流2024年2月2日小于 1 分钟约 119 字

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

#include <queue>
#include <vector>
using namespace std;

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;
        queue<TreeNode *> buffer;
        buffer.push(pRoot);
        while (!buffer.empty()) {
            vector<int> oneTraverse;
            queue<TreeNode *> nextLayer;
            while (!buffer.empty()) {
                auto cur = buffer.front();
                oneTraverse.push_back(cur->val);
                if (cur->left) nextLayer.push(cur->left);
                if (cur->right) nextLayer.push(cur->right);
                buffer.pop();
            }
            res.push_back(oneTraverse);
            swap(buffer, nextLayer);
        }
        return res;
    }
};