好像陷入了死循环
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct st {
int data, left, right;
} a[10000];
void print(int p) {
if (p != 0) {
print(a[p].left);
cout << a[p].data << " ";
print(a[p].right);
}
return;
}
void insert(int k) { //在树中插入第k个数
int p = 1;//节点 从根节点开始遍历
while (p > 0) {//遍历的节点不为空
if (a[k].data <= a[p].data) {//将a[k]插入到p为根节点的树的左子树上
if (a[p].left == 0) {//p的左子树为空,直接插入
a[p].left = k;
p = 0;
}
else {
p = a[p].left;
}
}
else {
if (a[p].right == 0) {//将a[k]插入到p为根节点的树的右子树上
a[p].right = k;
p = 0;
}
else {
p = a[p].right;
}
}
}
return;
}
int main() {
int n, m;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[n].data;
for (int i = 1; i <= n; i++) insert(i);
print(1);
return 0;
}