通过输入vector数组快速实现二叉树构建
例如:输入
7
[3 9 20 -1 -1 15 7]
快速构建如下二叉树
代码示例:
#include<iostream>
#include<vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<TreeNode> Nodes(n,0);
for (int i = 0; i < n; i++) {
cin >> Nodes[i].val;
}
for (int i = 0; i < n; i++) {
if (Nodes[i].val == -1) {
continue;
}
if (2 * i + 1 < n&&Nodes[2*i+1].val!=-1) {
Nodes[i].left = &Nodes[2 * i + 1];
cout << "i:" << i << " j:" << 2 * i + 1 << endl;
}
else {
Nodes[i].left = NULL;
}
if (2 * i + 2 < n&&Nodes[2 * i + 2].val != -1) {
Nodes[i].right = &Nodes[2 * i + 2];
cout << "i:" << i << " j:" << 2 * i + 2 << endl;
}
else
Nodes[i].right = NULL;
}
return 0;
}