#include <stdio.h>
#include <string.h>
struct t
{
char key[50];
struct t *r, *l;
};
// void
// bin_tree_search_inorder(struct t *t, char *key)
// {
// if (t != NULL)
// {
// bin_tree_search_inorder(t->l, key);
// // do check here
// if (strstr(t->key, key) != 0)
// printf("\nMatch: [%s]", t->key);
// else
// printf("\nDoesn't match: [%s]", t->key);
// bin_tree_search_inorder(t->r, key);
// } else
// return;
// }
void
bin_tree_search_inorder(struct t *t, char *key)
{
int res;
if (t == NULL)
return;
{
printf("\nMatch: [%s]", t
->key
); bin_tree_search_inorder(t->l, key);
bin_tree_search_inorder(t->r, key);
} else {
printf("\nDoesn't match: [%s]", t
->key
); {
if (res > 0)
bin_tree_search_inorder(t->l, key);
else
bin_tree_search_inorder(t->r, key);
}
}
}
int main(void) {
struct t root, l, r, rl, rr, ll, lr;
root.l = &l;
root.r = &r;
l.l = l.r = r.l = r.r = NULL;
r.l = &rl;
r.r = &rr;
rl.l = rl.r = rr.l = rr.r = NULL;
l.l = ≪
l.r = &lr;
ll.l = ll.r = lr.l = lr.r = NULL;
bin_tree_search_inorder(&root, "tr");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnN0cnVjdCB0CnsKCWNoYXIga2V5WzUwXTsKCXN0cnVjdCB0ICpyLCAqbDsKfTsKCi8vIHZvaWQKLy8gYmluX3RyZWVfc2VhcmNoX2lub3JkZXIoc3RydWN0IHQgKnQsIGNoYXIgKmtleSkKLy8gewovLyAgICAgaWYgKHQgIT0gTlVMTCkKLy8gICAgIHsKLy8gICAgICAgICBiaW5fdHJlZV9zZWFyY2hfaW5vcmRlcih0LT5sLCBrZXkpOwovLyAgICAgICAgIC8vIGRvIGNoZWNrIGhlcmUKLy8gICAgICAgICBpZiAoc3Ryc3RyKHQtPmtleSwga2V5KSAhPSAwKQovLyAgICAgCQlwcmludGYoIlxuTWF0Y2g6IFslc10iLCB0LT5rZXkpOwovLyAJCWVsc2UKLy8gICAgIAkJcHJpbnRmKCJcbkRvZXNuJ3QgbWF0Y2g6IFslc10iLCB0LT5rZXkpOwovLyAgICAgICAgIGJpbl90cmVlX3NlYXJjaF9pbm9yZGVyKHQtPnIsIGtleSk7Ci8vICAgICB9IGVsc2UKLy8gICAgICAgICByZXR1cm47Ci8vIH0KCnZvaWQKYmluX3RyZWVfc2VhcmNoX2lub3JkZXIoc3RydWN0IHQgKnQsIGNoYXIgKmtleSkKewoJaW50IHJlczsKICAgIGlmICh0ID09IE5VTEwpCiAgICAgICAgcmV0dXJuOwogICAgaWYgKHN0cnN0cih0LT5rZXksIGtleSkgIT0gMCkKICAgIHsKICAgIAlwcmludGYoIlxuTWF0Y2g6IFslc10iLCB0LT5rZXkpOwogICAgCWJpbl90cmVlX3NlYXJjaF9pbm9yZGVyKHQtPmwsIGtleSk7CiAgICAJYmluX3RyZWVfc2VhcmNoX2lub3JkZXIodC0+ciwga2V5KTsKICAgIH0gZWxzZSB7CiAgICAJcHJpbnRmKCJcbkRvZXNuJ3QgbWF0Y2g6IFslc10iLCB0LT5rZXkpOwogICAgCWlmIChzdHJsZW4odC0+a2V5KSA+PSBzdHJsZW4oa2V5KSkKICAgIAl7CiAgICAJCXJlcyA9IHN0cmNtcChrZXksIHQtPmtleSk7CiAgICAJCWlmIChyZXMgPiAwKQogICAgCQkJYmluX3RyZWVfc2VhcmNoX2lub3JkZXIodC0+bCwga2V5KTsKICAgIAkJZWxzZQogICAgCQkJYmluX3RyZWVfc2VhcmNoX2lub3JkZXIodC0+ciwga2V5KTsKICAgIAl9CiAgICB9Cn0KCmludCBtYWluKHZvaWQpIHsKCXN0cnVjdCB0IHJvb3QsIGwsIHIsIHJsLCByciwgbGwsIGxyOwoJc3RyY3B5KCZyb290LmtleSwgInRyZWUiKTsKCXN0cmNweSgmbC5rZXksICJ0cmF2ZXJzYWwiKTsKCXN0cmNweShyLmtleSwgInRyZWVzIik7Cglyb290LmwgPSAmbDsKCXJvb3QuciA9ICZyOwoJbC5sID0gbC5yID0gci5sID0gci5yID0gTlVMTDsKCXN0cmNweShybC5rZXksICJ0cmUiKTsKCXN0cmNweShyci5rZXksICJ0eCIpOwoJci5sID0gJnJsOwoJci5yID0gJnJyOwoJcmwubCA9IHJsLnIgPSByci5sID0gcnIuciA9IE5VTEw7CglzdHJjcHkobGwua2V5LCAidGEiKTsKCXN0cmNweShsci5rZXksICJ0cmF2dnYiKTsKCWwubCA9ICZsbDsKCWwuciA9ICZscjsKCWxsLmwgPSBsbC5yID0gbHIubCA9IGxyLnIgPSBOVUxMOwoJYmluX3RyZWVfc2VhcmNoX2lub3JkZXIoJnJvb3QsICJ0ciIpOwoJcmV0dXJuIDA7Cn0K