// 2bun-ki
#include <stdio.h>
#include <stdlib.h>
#define height 6
#define MAX (1<<height)
int t[MAX+1]; //配列外アクセス防止のためのダミーで+1
int sz = 0;
void swap(int *x, int *y){
int tmp = *x;
*x = *y;
*y = tmp;
}
void initTree(int n){
int i;
for(i=0;i<MAX;i++){
t[i] = -1;
}
}
void printA(){
int i;
for(i
=1;i
<MAX
;i
++) printf("%d ",t
[i
]); }
int goP(int i){
if(i/2 == 0) return 0;
else return i/2;
}
int goL(int i){
if(2*i >= MAX) return 0;
else return 2*i;
}
int goR(int i){
if(2*i+1 >= MAX) return 0;
else return 2*i+1;
}
void insBT(int x){
int k,i = 1;
for(k=0;k<height;k++){
if(t[i]==-1){
t[i] = x;
sz++;
return;
}
if(x < t[i]) i = goL(i);
else i = goR(i);
}
printf("Error : too high -> %d\n",x
); }
void printT(int i){
int x = i;
while(x/2!=0){
x/=2;
}
}
void preOrder(int i){
if(t[i] == -1) return;
printT(i);
preOrder(goL(i));
preOrder(goR(i));
}
void inOrder(int i){
if(t[i] == -1) return;
inOrder(goL(i));
printT(i);
inOrder(goR(i));
}
void postOrder(int i){
if(t[i] == -1) return;
postOrder(goL(i));
postOrder(goR(i));
printT(i);
}
int main(void){
int i,x,n;
initTree(n);
for(i=0;i<n;i++){
insBT(x);
}
preOrder(1);
inOrder(1);
printf("== postOrder ====\n"); postOrder(1);
return 0;
}
Ly8gMmJ1bi1raQogCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiAKI2RlZmluZSBoZWlnaHQgNgojZGVmaW5lIE1BWCAoMTw8aGVpZ2h0KSAKIAppbnQgdFtNQVgrMV07IC8v6YWN5YiX5aSW44Ki44Kv44K744K56Ziy5q2i44Gu44Gf44KB44Gu44OA44Of44O844Gn77yL77yRCmludCBzeiA9IDA7CiAKdm9pZCBzd2FwKGludCAqeCwgaW50ICp5KXsKICAgIGludCB0bXAgPSAqeDsKICAgICp4ID0gKnk7CiAgICAqeSA9IHRtcDsKfQogCnZvaWQgaW5pdFRyZWUoaW50IG4pewogICAgaW50IGk7CiAgICBmb3IoaT0wO2k8TUFYO2krKyl7CiAgICAgICAgdFtpXSA9IC0xOwogICAgfQp9CiAKdm9pZCBwcmludEEoKXsKICAgIGludCBpOwogICAgZm9yKGk9MTtpPE1BWDtpKyspIHByaW50ZigiJWQgIix0W2ldKTsKICAgIHByaW50ZigiXG4iKTsKfQogCmludCBnb1AoaW50IGkpewogICAgaWYoaS8yID09IDApIHJldHVybiAwOwogICAgZWxzZSByZXR1cm4gaS8yOwp9CiAKaW50IGdvTChpbnQgaSl7CiAgICBpZigyKmkgPj0gTUFYKSByZXR1cm4gMDsKICAgIGVsc2UgcmV0dXJuIDIqaTsKfQogCmludCBnb1IoaW50IGkpewogICAgaWYoMippKzEgPj0gTUFYKSByZXR1cm4gMDsKICAgIGVsc2UgcmV0dXJuIDIqaSsxOwp9CiAKdm9pZCBpbnNCVChpbnQgeCl7CiAgICBpbnQgayxpID0gMTsKICAgIGZvcihrPTA7azxoZWlnaHQ7aysrKXsKICAgICAgICBpZih0W2ldPT0tMSl7CiAgICAgICAgICAgIHRbaV0gPSB4OwogICAgICAgICAgICBzeisrOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmKHggPCB0W2ldKSBpID0gZ29MKGkpOwogICAgICAgIGVsc2UgaSA9IGdvUihpKTsKICAgIH0KICAgIHByaW50ZigiRXJyb3IgOiB0b28gaGlnaCAtPiAlZFxuIix4KTsKfQogCnZvaWQgcHJpbnRUKGludCBpKXsKICAgIGludCB4ID0gaTsKICAgIHdoaWxlKHgvMiE9MCl7CiAgICAgICAgcHJpbnRmKCIgICIpOwogICAgICAgIHgvPTI7CiAgICB9CiAgICBwcmludGYoIiVkXG4iLHRbaV0pOwp9CiAKdm9pZCBwcmVPcmRlcihpbnQgaSl7CiAgICBpZih0W2ldID09IC0xKSByZXR1cm47CiAgICBwcmludFQoaSk7CiAgICBwcmVPcmRlcihnb0woaSkpOwogICAgcHJlT3JkZXIoZ29SKGkpKTsKfQogCnZvaWQgaW5PcmRlcihpbnQgaSl7CiAgICBpZih0W2ldID09IC0xKSByZXR1cm47CiAgICBpbk9yZGVyKGdvTChpKSk7CiAgICBwcmludFQoaSk7CiAgICBpbk9yZGVyKGdvUihpKSk7Cn0KIAp2b2lkIHBvc3RPcmRlcihpbnQgaSl7CiAgICBpZih0W2ldID09IC0xKSByZXR1cm47CiAgICBwb3N0T3JkZXIoZ29MKGkpKTsKICAgIHBvc3RPcmRlcihnb1IoaSkpOwogICAgcHJpbnRUKGkpOwp9CiAKaW50IG1haW4odm9pZCl7CiAgICBpbnQgaSx4LG47CiAgICBzY2FuZigiJWQiLCZuKTsKICAgIGluaXRUcmVlKG4pOwogICAgZm9yKGk9MDtpPG47aSsrKXsKICAgICAgICBzY2FuZigiJWQiLCZ4KTsKICAgICAgICBpbnNCVCh4KTsKICAgIH0KICAgIHByaW50ZigiPT0gcHJlT3JkZXIgPT09PVxuIik7CiAgICBwcmVPcmRlcigxKTsKICAgIHByaW50ZigiXG4iKTsKICAgIHByaW50ZigiPT0gaW5PcmRlciA9PT09XG4iKTsKICAgIGluT3JkZXIoMSk7CiAgICBwcmludGYoIlxuIik7CiAgICBwcmludGYoIj09IHBvc3RPcmRlciA9PT09XG4iKTsKICAgIHBvc3RPcmRlcigxKTsKICAgIHByaW50ZigiXG4iKTsKICAgIHByaW50ZigiJWQiLCBNQVgpOwogICAgcmV0dXJuIDA7Cn0=