ACM模式手动构建二叉树
ACM模式手动构建二叉树
给一个vector<string>
,数组每个元素表示二叉树节点的val
,如果元素为"N"
则为空节点,构建二叉树
/*
#include <iostream>
#include <vector>
#include <queue>
#include <string>
using namespace std;
*/
// 笔试用通用库代替以上库方便
#include <bits/stdc++.h>// 定义二叉树节点结构
struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};// 构建二叉树函数
TreeNode* buildTree(const vector<string>& data) {if (data.empty() || data[0] == "N") return nullptr;TreeNode* root = new TreeNode(stoi(data[0]));queue<TreeNode*> que;que.push(root);int i = 1;while (!que.empty() && i < data.size()) {TreeNode* cur = que.front();que.pop();// 左子节点if (i < data.size() && data[i] != "N") {cur->left = new TreeNode(stoi(data[i]));que.push(cur->left);}i++;// 右子节点if (i < data.size() && data[i] != "N") {cur->right = new TreeNode(stoi(data[i]));que.push(cur->right);}i++;}return root;
}// 示例测试
int main() {vector<string> data = {"1", "2", "3", "N", "4", "5", "N"};TreeNode* root = buildTree(data);return 0;
}