Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
125582 | 吴悠 | 前序遍历 | C++ | 通过 | 100 | 0 MS | 444 KB | 816 | 2024-01-23 17:18:07 |
#include<iostream> using namespace std; int n; struct Node{ int data; int cl; int cr; }tree[16384]; void create(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].cl!=-1){ pos=tree[pos].cl; } else dir=1; } else if(tree[pos].cr!=-1){ pos=tree[pos].cr; } else dir=-1; } dir==1?tree[pos].cl=i:tree[pos].cr=i; } } void dfs(int root){ if(root!=-1){ cout<<tree[root].data<<" "; dfs(tree[root].cl); dfs(tree[root].cr); } } int main(){ cin>>n; int node[n+1]; for(int i=1;i<=n;i++){ cin>>node[i]; } for(int i=0;i<=16384;i++){ tree[i].cl=-1; tree[i].data=0; tree[i].cr=-1; } create(node,n); dfs(1); return 0; }