#include<iostream>
#include <stdlib.h>
using namespace std;
struct tree {
char info;
struct tree *left;
struct tree *right;
};
struct tree *root; /* начальная вершина дерева */
struct tree *stree(struct tree *root, struct tree *r, char info);
void print_tree(struct tree *root, int l);
int main(void)
{
char s[10];
root = NULL; /* инициализация корня дерева */
int i = 0;
do {
cout << "Input char: " << endl;
cin >> s;
root = stree(root, root, *s);
i++;
} while (i<10);
print_tree(root, 0);
return 0;
}
struct tree *stree(struct tree *root, struct tree *r, char info)
{
if (!r) {
r = (struct tree *) malloc(sizeof(struct tree));
if (!r) {
cout << "Не хватает памяти\n";
exit(0);
}
r->left = NULL;
r->right = NULL;
r->info = info;
if (!root) return r; /* первый вход */
if (info < root->info) root->left = r;
else root->right = r;
return r;
}
if (info < r->info)
stree(r, r->left, info);
else
stree(r, r->right, info);
return root;
}
void print_tree(struct tree *r, int l)
{
int i;
if (!r) return;
else //Иначе
{
print_tree(r->left, ++l);//С помощью рекурсивного посещаем левое поддерево
for (int i = 0; i < l; ++i)
cout << "|";
cout<< r->info<<endl; //И показываем элемент
l--;
}
print_tree(r->right, ++l); //С помощью рекурсии посещаем правое поддерево
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgdHJlZSB7CgljaGFyIGluZm87CglzdHJ1Y3QgdHJlZSAqbGVmdDsKCXN0cnVjdCB0cmVlICpyaWdodDsKfTsKCnN0cnVjdCB0cmVlICpyb290OyAvKiDQvdCw0YfQsNC70YzQvdCw0Y8g0LLQtdGA0YjQuNC90LAg0LTQtdGA0LXQstCwICovCnN0cnVjdCB0cmVlICpzdHJlZShzdHJ1Y3QgdHJlZSAqcm9vdCwgc3RydWN0IHRyZWUgKnIsIGNoYXIgaW5mbyk7CnZvaWQgcHJpbnRfdHJlZShzdHJ1Y3QgdHJlZSAqcm9vdCwgaW50IGwpOwoKaW50IG1haW4odm9pZCkKewoJY2hhciBzWzEwXTsKCglyb290ID0gTlVMTDsgIC8qINC40L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGPINC60L7RgNC90Y8g0LTQtdGA0LXQstCwICovCglpbnQgaSA9IDA7CglkbyB7CgkJY291dCA8PCAiSW5wdXQgY2hhcjogIiA8PCBlbmRsOwoJCWNpbiA+PiBzOwoJCXJvb3QgPSBzdHJlZShyb290LCByb290LCAqcyk7CgkJaSsrOwoJfSB3aGlsZSAoaTwxMCk7CgoJcHJpbnRfdHJlZShyb290LCAwKTsKCQoJcmV0dXJuIDA7Cn0KCnN0cnVjdCB0cmVlICpzdHJlZShzdHJ1Y3QgdHJlZSAqcm9vdCwgc3RydWN0IHRyZWUgKnIsIGNoYXIgaW5mbykKewoKCWlmICghcikgewoJCXIgPSAoc3RydWN0IHRyZWUgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgdHJlZSkpOwoJCWlmICghcikgewoJCQljb3V0IDw8ICLQndC1INGF0LLQsNGC0LDQtdGCINC/0LDQvNGP0YLQuFxuIjsKCQkJZXhpdCgwKTsKCQl9CgkJci0+bGVmdCA9IE5VTEw7CgkJci0+cmlnaHQgPSBOVUxMOwoJCXItPmluZm8gPSBpbmZvOwoJCWlmICghcm9vdCkgcmV0dXJuIHI7IC8qINC/0LXRgNCy0YvQuSDQstGF0L7QtCAqLwoJCWlmIChpbmZvIDwgcm9vdC0+aW5mbykgcm9vdC0+bGVmdCA9IHI7CgkJZWxzZSByb290LT5yaWdodCA9IHI7CgkJcmV0dXJuIHI7Cgl9CgoJaWYgKGluZm8gPCByLT5pbmZvKQoJCXN0cmVlKHIsIHItPmxlZnQsIGluZm8pOwoJZWxzZQoJCXN0cmVlKHIsIHItPnJpZ2h0LCBpbmZvKTsKCglyZXR1cm4gcm9vdDsKfQoKdm9pZCBwcmludF90cmVlKHN0cnVjdCB0cmVlICpyLCBpbnQgbCkKewoJaW50IGk7CgoJaWYgKCFyKSByZXR1cm47CgllbHNlIC8v0JjQvdCw0YfQtQoJewoJCXByaW50X3RyZWUoci0+bGVmdCwgKytsKTsvL9ChINC/0L7QvNC+0YnRjNGOINGA0LXQutGD0YDRgdC40LLQvdC+0LPQviDQv9C+0YHQtdGJ0LDQtdC8INC70LXQstC+0LUg0L/QvtC00LTQtdGA0LXQstC+CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBsOyArK2kpCgkJCWNvdXQgPDwgInwiOwoJCWNvdXQ8PCByLT5pbmZvPDxlbmRsOyAvL9CYINC/0L7QutCw0LfRi9Cy0LDQtdC8INGN0LvQtdC80LXQvdGCCgkJCWwtLTsKCQkKCX0KCXByaW50X3RyZWUoci0+cmlnaHQsICsrbCk7IC8v0KEg0L/QvtC80L7RidGM0Y4g0YDQtdC60YPRgNGB0LjQuCDQv9C+0YHQtdGJ0LDQtdC8INC/0YDQsNCy0L7QtSDQv9C+0LTQtNC10YDQtdCy0L4KCn0=