#include <stdlib.h>
#include<stdio.h>
struct node
{
int number;
struct node *left;
struct node *right;
};
void add(struct node *top, int newNodeNumber)
{
if (top->number == 0)
{
top->number = newNodeNumber;
}
else if (top->number> newNodeNumber)
{
if (top->left == NULL)
{
struct node
*newNode
= (struct node
*)malloc(sizeof(struct node
)); newNode->number = newNodeNumber;
top->left = newNode;
}
else
{
add(top->left, newNodeNumber);
}
}
else
{
if (top->right == NULL)
{
struct node
*newNode
= (struct node
*)malloc(sizeof(struct node
)); newNode->number = newNodeNumber;
top->right = newNode;
}
else
{
add(top->right, newNodeNumber);
}
}
}
void printNode(struct node *top)
{
if (top->left != NULL)
{
printNode(top->left);
}
int n = top->number;
if (top->right != NULL)
{
printNode(top->right);
}
}
int main()
{
struct node
{
int number;
struct node *left;
struct node *right;
};
struct node
*top
= (struct node
*)malloc(sizeof(struct node
)); top->number = 0;
top->left = NULL;
top->right = NULL;
add(top, 4);
add(top, 5);
add(top, 2);
printNode(top);
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZTxzdGRpby5oPgoKCgoKc3RydWN0IG5vZGUKewoJaW50IG51bWJlcjsKCXN0cnVjdCBub2RlICpsZWZ0OwoJc3RydWN0IG5vZGUgKnJpZ2h0Owp9OwoKdm9pZCBhZGQoc3RydWN0IG5vZGUgKnRvcCwgaW50IG5ld05vZGVOdW1iZXIpCnsKCWlmICh0b3AtPm51bWJlciA9PSAwKQoJewoJCXRvcC0+bnVtYmVyID0gbmV3Tm9kZU51bWJlcjsKCX0KCWVsc2UgaWYgKHRvcC0+bnVtYmVyPiBuZXdOb2RlTnVtYmVyKQoJewoJCWlmICh0b3AtPmxlZnQgPT0gTlVMTCkKCQl7CgkJCXN0cnVjdCBub2RlICpuZXdOb2RlID0gKHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJCQluZXdOb2RlLT5udW1iZXIgPSBuZXdOb2RlTnVtYmVyOwoKCQkJdG9wLT5sZWZ0ID0gbmV3Tm9kZTsKCQl9CgkJZWxzZQoJCXsKCQkJYWRkKHRvcC0+bGVmdCwgbmV3Tm9kZU51bWJlcik7CgkJfQoJfQoJZWxzZQoJewoJCWlmICh0b3AtPnJpZ2h0ID09IE5VTEwpCgkJewoJCQlzdHJ1Y3Qgbm9kZSAqbmV3Tm9kZSA9IChzdHJ1Y3Qgbm9kZSAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IG5vZGUpKTsKCQkJbmV3Tm9kZS0+bnVtYmVyID0gbmV3Tm9kZU51bWJlcjsKCQkJdG9wLT5yaWdodCA9IG5ld05vZGU7CgkJfQoJCWVsc2UKCQl7CgkJCWFkZCh0b3AtPnJpZ2h0LCBuZXdOb2RlTnVtYmVyKTsKCQl9CgoJfQp9Cgp2b2lkIHByaW50Tm9kZShzdHJ1Y3Qgbm9kZSAqdG9wKQp7CglpZiAodG9wLT5sZWZ0ICE9IE5VTEwpCgl7CgkJcHJpbnROb2RlKHRvcC0+bGVmdCk7Cgl9CgoJaW50IG4gPSB0b3AtPm51bWJlcjsKCXByaW50ZigiJWRcbiIsIG4pOwoKCWlmICh0b3AtPnJpZ2h0ICE9IE5VTEwpCgl7CgkJcHJpbnROb2RlKHRvcC0+cmlnaHQpOwoJfQoKfQoKCmludCBtYWluKCkKewoJc3RydWN0IG5vZGUKCXsKCQlpbnQgbnVtYmVyOwoJCXN0cnVjdCBub2RlICpsZWZ0OwoJCXN0cnVjdCBub2RlICpyaWdodDsKCX07CglzdHJ1Y3Qgbm9kZSAqdG9wID0gKHN0cnVjdCBub2RlICopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwoJdG9wLT5udW1iZXIgPSAwOwoJdG9wLT5sZWZ0ID0gTlVMTDsKCXRvcC0+cmlnaHQgPSBOVUxMOwoKCWFkZCh0b3AsIDQpOwoJYWRkKHRvcCwgNSk7CglhZGQodG9wLCAyKTsKCXByaW50Tm9kZSh0b3ApOwoJcmV0dXJuIDA7Cn0K