# 构建链表

struct ListNode {
public:
    int val;   // 节点值
    ListNode* next;    // 下一个节点
    ListNode(int n) :val(n), next(nullptr) {}  // 构造函数
    ListNode(int n, ListNode* next) :val(n), next(next) {} 
};
ListNode* getListNodemy(vector<int> &str) {
    ListNode* dumyHead = new ListNode(-1);
    ListNode* ptr = dumyHead;
    int nums = str.size();
    int i = 0;
    while (i<nums) {
        dumyHead->next =new ListNode(str[i]);
        dumyHead = dumyHead->next;
        i++;
    }
    return ptr->next;
}

# 构建二叉树

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 根据数组构造二叉树
TreeNode* construct_binary_tree(const vector<int>& vec) {
    vector<TreeNode*> vecTree (vec.size(), NULL);
    TreeNode* root = NULL;
    for (int i = 0; i < vec.size(); i++) {
        TreeNode* node = NULL;
        if (vec[i] != -1) node = new TreeNode(vec[i]);
        vecTree[i] = node;
        if (i == 0) root = node;
    }
    for (int i = 0; i * 2 + 1 < vec.size(); i++) {
        if (vecTree[i] != NULL) {
            vecTree[i]->left = vecTree[i * 2 + 1];
            if(i * 2 + 2 < vec.size())
            vecTree[i]->right = vecTree[i * 2 + 2];
        }
    }
    return root;
}
// 层序打印二叉树
void print_binary_tree(TreeNode* root) {
    queue<TreeNode*> que;
    if (root != NULL) que.push(root);
    vector<vector<int>> result;
    while (!que.empty()) {
        int size = que.size();
        vector<int> vec;
        for (int i = 0; i < size; i++) {
            TreeNode* node = que.front();
            que.pop();
            if (node != NULL) {
                vec.push_back(node->val);
                que.push(node->left);
                que.push(node->right);
            }
            // 这里的处理逻辑是为了把 null 节点打印出来,用 - 1 表示 null
            else vec.push_back(-1);
        }
        result.push_back(vec);
    }
    for (int i = 0; i < result.size(); i++) {
        for (int j = 0; j < result[i].size(); j++) {
            cout << result[i][j] << " ";
        }
        cout << endl;
    }
}

# 循环输入

while(cin>>n){
}