1 条题解
-
0
C :
#include<stdio.h> #include<string.h> struct tree { int data; int lch,rch; }a[100100];; int n; void bst(); int z_order(int); int h_order(int); int main() { bst(); z_order(1); printf("\n"); h_order(1); return 0; } void bst() { scanf("%d",&n); memset(a,0,sizeof(a)); int x; for(int i=1;i<=n;i++) { scanf("%d",&x); a[i].data=x; if(i==1) continue; int p=1; while(1) { if(x<a[p].data) { if(a[p].lch!=0) { p=a[p].lch; continue; } else { a[p].lch=i; break; } } else { if(a[p].rch!=0) { p=a[p].rch; continue; } else { a[p].rch=i; break; } } } } } int z_order(int x) { if(x==0)return 0; z_order(a[x].lch); printf("%d ",a[x]); z_order(a[x].rch); return 0; } int h_order(int x) { if(x==0)return 0; h_order(a[x].lch); h_order(a[x].rch); printf("%d ",a[x]); return 0; }C++ :
#include<iostream> #include<cstdio> #include<cstring> using namespace std; struct tree { int data; int lch,rch; }; int n; tree a[100100]; void bst(); int z_order(int); int h_order(int); int main() { //freopen("bst5.in","r",stdin); //freopen("bst5.out","w",stdout); bst(); z_order(1); cout<<endl; h_order(1); return 0; } void bst() { cin>>n; memset(a,0,sizeof(a)); int x; for(int i=1;i<=n;i++) { cin>>x; a[i].data=x; if(i==1) continue; int p=1; while(1) { if(x<a[p].data) { if(a[p].lch!=0) { p=a[p].lch; continue; } else { a[p].lch=i; break; } } else { if(a[p].rch!=0) { p=a[p].rch; continue; } else { a[p].rch=i; break; } } } } } int z_order(int x) { if(x==0)return 0; z_order(a[x].lch); cout<<a[x].data<<' '; z_order(a[x].rch); return 0; } int h_order(int x) { if(x==0)return 0; h_order(a[x].lch); h_order(a[x].rch); cout<<a[x].data<<' '; return 0; }Pascal :
program bst; type node=^rec; rec=record data:longint; left,right:node; end; var bt,p,q:node; n,i,j,key:longint; procedure qianxu(p:node); begin if p<>nil then begin write(p^.data,' '); qianxu(p^.left); qianxu(p^.right); end; end; procedure zhongxu(p:node); begin if p<>nil then begin zhongxu(p^.left); write(p^.data,' '); zhongxu(p^.right); end; end; procedure houxu(p:node); begin if p<>nil then begin houxu(p^.left); houxu(p^.right); write(p^.data,' '); end; end; Procedure insert(var pnode:node; key:longint); var tempnode:node; begin new(tempnode); tempnode^.data:=key; tempnode^.left:=nil; tempnode^.right:=nil; if pnode=nil then begin pnode:=tempnode;end else begin p:=pnode;q:=nil; While(p<>nil) do begin q:=p; if key<p^.data then p:=p^.left else p:=p^.right; end; if key<q^.data then q^.left:=tempnode else q^.right:= tempnode; end; End; begin begin readln(n); bt:=nil; for i:=1 to n do begin read(key); insert(bt,key); end; zhongxu(bt);writeln; houxu(bt);writeln; end; end.
- 1
信息
- ID
- 1080
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者