#include <stdio.h>
#include <malloc.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
typedef struct bst {
int data;
struct bst *left;
struct bst *right;
} tree;
tree *insert(int value, tree *t) {
if(t == NULL) {
t
= (tree
*)malloc(sizeof(tree
)); t->data = value;
t->left = NULL;
t->right = NULL;
} else if(value < t->data) {
t->left = insert(value, t->left);
} else if(value >= t->data) {
t->right = insert(value, t->right);
}
return t;
}
void inorder(tree *t) {
if(t != NULL)
inorder(t->left),
inorder(t->right);
}
int main(int argc, char const *argv[]) {
//freopen(FIN, "r", stdin);
//freopen(FOUT, "w", stdout);
tree *root = NULL;
int n, x;
for(int i = 0; i < n; ++i)
root = insert( x, root );
inorder( root );
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KI2RlZmluZSBGSU4gImFsZ3NvcnQuaW4iCiNkZWZpbmUgRk9VVCAiYWxnc29ydC5vdXQiCiAKdHlwZWRlZiBzdHJ1Y3QgYnN0IHsKICAgICAgIGludCBkYXRhOwogICAgICAgc3RydWN0IGJzdCAqbGVmdDsKICAgICAgIHN0cnVjdCBic3QgKnJpZ2h0Owp9IHRyZWU7CiAKIAp0cmVlICppbnNlcnQoaW50IHZhbHVlLCB0cmVlICp0KSB7CiAKICAgICBpZih0ID09IE5VTEwpIHsKIAogICAgICAgdCA9ICh0cmVlKiltYWxsb2Moc2l6ZW9mKHRyZWUpKTsKICAgICAgIHQtPmRhdGEgPSB2YWx1ZTsKICAgICAgIHQtPmxlZnQgPSBOVUxMOwogICAgICAgdC0+cmlnaHQgPSBOVUxMOwogCiAgICAgfSBlbHNlIGlmKHZhbHVlIDwgdC0+ZGF0YSkgewogCiAgICAgICB0LT5sZWZ0ID0gaW5zZXJ0KHZhbHVlLCB0LT5sZWZ0KTsKIAogICAgIH0gZWxzZSBpZih2YWx1ZSA+PSB0LT5kYXRhKSB7CiAKICAgICAgIHQtPnJpZ2h0ID0gaW5zZXJ0KHZhbHVlLCB0LT5yaWdodCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHQ7Cn0KIAp2b2lkIGlub3JkZXIodHJlZSAqdCkgewogCiAgICAgaWYodCAhPSBOVUxMKQogICAgIGlub3JkZXIodC0+bGVmdCksCiAgICAgcHJpbnRmKCIlZCAiLCB0LT5kYXRhKSwKICAgICBpbm9yZGVyKHQtPnJpZ2h0KTsKfQogCmludCBtYWluKGludCBhcmdjLCBjaGFyIGNvbnN0ICphcmd2W10pIHsKIAogIC8vZnJlb3BlbihGSU4sICJyIiwgc3RkaW4pOwogCiAgLy9mcmVvcGVuKEZPVVQsICJ3Iiwgc3Rkb3V0KTsKIAogIHRyZWUgKnJvb3QgPSBOVUxMOwogCiAgaW50IG4sIHg7CiAKICBzY2FuZigiJWQiLCAmbik7CiAKICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogCiAgICAgIHNjYW5mKCIlZCIsICZ4KSwKIAogICAgICByb290ID0gaW5zZXJ0KCB4LCByb290ICk7CiAKICBpbm9yZGVyKCByb290ICk7CiAKICByZXR1cm4gMDsKfQ==