Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
125539 | I am BM | 前序遍历 | C++ | 通过 | 100 | 0 MS | 368 KB | 940 | 2024-01-23 17:09:45 |
#include <bits/stdc++.h> using namespace std; const int Maxn=10000; int n; struct Tree { int left,right,data; } Tree [Maxn]; void Cr(int *node,int len) { for (int i=1;i<=len;i++) { Tree[i].data=node[i]; int pos=0,dir=0; while (dir==0) { if (node[i]<Tree[pos].data) { if (Tree[pos].left!=-1) { pos=Tree[pos].left; } else dir=1; } else { if (Tree[pos].right!=-1) { pos=Tree[pos].right; } else dir=-1; } } dir==1?Tree[pos].left=i:Tree[pos].right=i; } return; } void Print(int floor) { if (floor!=-1) { cout<<Tree[floor].data<<' '; Print(Tree[floor].left); Print(Tree[floor].right); } return; } int main() { cin>>n; int node[n+1]; for (int i=1;i<=n;i++) cin>>node[i]; for (int i=0;i<Maxn;i++) { Tree[i].left=-1; Tree[i].data=0; Tree[i].right=-1; } Cr(node,n); Print(1); return 0; }