「AOJ Problem Set from ALDS1 問20~24」の編集履歴(バックアップ)一覧に戻る
#include<stdio.h> const int LIMIT=26; const int NIL=-1; struct node{ int p,right,left; }; node Tree[LIMIT]; void Preorder(int p){ if(p==-1)return; printf(" %d",p); Preorder(Tree[p].left); Preorder(Tree[p].right); } void Inorder(int p){ if(p==-1)return; Inorder(Tree[p].left); printf(" %d",p); Inorder(Tree[p].right); } void Postorder(int p){ if(p==-1)return; Postorder(Tree[p].left); Postorder(Tree[p].right); printf(" %d",p); } int main(){ int n,l,r,no; scanf("%d",&n); for(int i=0;i<n;i++)Tree[i].p=NIL; for(int i=0;i<n;i++){ scanf("%d %d %d",&no,&l,&r); Tree[no].left=l; Tree[no].right=r; Tree[l].p=Tree[r].p=no; } int p=0; for(int i=0;i<n;i++)if(Tree[i].p==NIL)p=i; printf("Preorder\n"); Preorder(p); printf("\nInorder\n"); Inorder(p); printf("\nPostorder\n"); Postorder(p); printf("\n"); }