Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
125609 | 林泽豪 | 前序遍历 | C++ | 通过 | 100 | 1 MS | 1420 KB | 867 | 2024-01-23 17:28:51 |
#include<bits/stdc++.h> using namespace std; const int Maxn=100000; int n; struct tree { int left,right,data; }tree[Maxn]; void creat(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; } } void pre(int root){ if(root!=-1){ cout<<tree[root].data<<' ' ; pre(tree[root].left ); pre(tree[root].right ); } } 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; } creat(node,n); pre(1); return 0; }