#include <stdio.h>
#include <malloc.h>
struct Node {
int data;
struct Node *left;
struct Node *right;
};
struct Node* insert(struct Node *root, int data) {
if(root == NULL) {
root
= (struct Node
*)malloc(sizeof(struct Node
)); root->data = data;
root->left = NULL;
root->right = NULL;
} else {
if(root->data > data) {
root->left = insert(root->left, data);
} else if(root->data < data) {
root->right = insert(root->right, data);
}
}
return root;
}
int search(struct Node *root, int key) {
if(root != NULL) {
if(root->data == key) {
return 1;
} else if(root->data > key) {
return search(root->left, key);
} else {
return search(root->right, key);
}
}
return 0;
}
void inorder(struct Node*root) {
if(root != NULL) {
inorder(root->left);
inorder(root->right);
}
}
int main(int argc, char const *argv[]) {
struct Node *root = NULL;
root = insert(root, 101);
for(int i = 10; i >= 0; i--)
insert(root, i) ;
inorder(root) ;
int keysearch = 1011;
printf("%d", search
(root
, keysearch
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KCnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgc3RydWN0IE5vZGUgKmxlZnQ7CiAgICBzdHJ1Y3QgTm9kZSAqcmlnaHQ7Cn07CgpzdHJ1Y3QgTm9kZSogaW5zZXJ0KHN0cnVjdCBOb2RlICpyb290LCBpbnQgZGF0YSkgewoKICAgICAgaWYocm9vdCA9PSBOVUxMKSB7CiAgICAgICAgICByb290ID0gKHN0cnVjdCBOb2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBOb2RlKSk7CiAgICAgICAgICByb290LT5kYXRhID0gZGF0YTsKICAgICAgICAgIHJvb3QtPmxlZnQgPSBOVUxMOwogICAgICAgICAgcm9vdC0+cmlnaHQgPSBOVUxMOwogICAgICB9IGVsc2UgewogICAgICAgIGlmKHJvb3QtPmRhdGEgPiBkYXRhKSB7CiAgICAgICAgICByb290LT5sZWZ0ID0gaW5zZXJ0KHJvb3QtPmxlZnQsIGRhdGEpOwogICAgICAgIH0gZWxzZSBpZihyb290LT5kYXRhIDwgZGF0YSkgewogICAgICAgICAgcm9vdC0+cmlnaHQgPSBpbnNlcnQocm9vdC0+cmlnaHQsIGRhdGEpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gcm9vdDsKfQoKaW50IHNlYXJjaChzdHJ1Y3QgTm9kZSAqcm9vdCwgaW50IGtleSkgewoKICAgaWYocm9vdCAhPSBOVUxMKSB7CgogICAgICAgIGlmKHJvb3QtPmRhdGEgPT0ga2V5KSB7CiAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfSBlbHNlIGlmKHJvb3QtPmRhdGEgPiBrZXkpIHsKICAgICAgICAgICByZXR1cm4gc2VhcmNoKHJvb3QtPmxlZnQsIGtleSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICByZXR1cm4gc2VhcmNoKHJvb3QtPnJpZ2h0LCBrZXkpOwogICAgICAgIH0KCiAgfQogICByZXR1cm4gMDsKfQoKdm9pZCBpbm9yZGVyKHN0cnVjdCBOb2RlKnJvb3QpIHsKICAgICBpZihyb290ICE9IE5VTEwpIHsKICAgICAgIGlub3JkZXIocm9vdC0+bGVmdCk7CiAgICAgICBwcmludGYoIiVkICIsIHJvb3QtPmRhdGEpOwogICAgICAgaW5vcmRlcihyb290LT5yaWdodCk7CiAgICAgfQp9CmludCBtYWluKGludCBhcmdjLCBjaGFyIGNvbnN0ICphcmd2W10pIHsKCiAgc3RydWN0IE5vZGUgKnJvb3QgPSBOVUxMOwogIHJvb3QgPSBpbnNlcnQocm9vdCwgMTAxKTsKICBmb3IoaW50IGkgPSAxMDsgaSA+PSAwOyBpLS0pCiAgICAgICAgIGluc2VydChyb290LCBpKSAgOwogIGlub3JkZXIocm9vdCkgICAgICAgICAgIDsKICBpbnQga2V5c2VhcmNoID0gMTAxMTsKICBwcmludGYoIiVkIiwgc2VhcmNoKHJvb3QsIGtleXNlYXJjaCkpOwogIHJldHVybiAwOwp9Cg==