// Based on http://stackoverflow.com/q/39722007/243245
#include <iostream>
using namespace std;
struct Tnode {
Tnode *left;
Tnode *right;
int content;
Tnode (int item = 0) {
this->content = item;
left = nullptr;
right = nullptr;
}};
class KrTree {
private:
Tnode* root;
void printHelper (Tnode* root) {
if(!root) {
return;
}
printHelper(root->left);
cout << root->content << " ";
printHelper(root->right);
}
void addHelper (Tnode *root, int item) {
if (root->content < item) {
if (root->right) {
addHelper(root->right, item);
} else {
root->right = new Tnode (item);
}
}else {
if (root->left) {
addHelper(root->left, item);
} else {
root->left = new Tnode (item);
}
}
}
public:
KrTree (){
}
void addTreeNode (int item) {
if (root){
this->addHelper(root, item);
} else {
root = new Tnode(item);
}
}
void tnodes_count () {
}
void deleteTreeNode () {
}
void printTree () {
printHelper (this->root);
}
~KrTree (){}
};
int main() {
KrTree* tree = new KrTree();
tree->printTree();
tree->addTreeNode(7);
tree->addTreeNode(2);
tree->addTreeNode(10);
tree->addTreeNode(1);
tree->addTreeNode(5);
tree->addTreeNode(9);
tree->addTreeNode(20);
tree->printTree();
return 0;
}
Ly8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMzk3MjIwMDcvMjQzMjQ1CgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgVG5vZGUgewogVG5vZGUgKmxlZnQ7CiBUbm9kZSAqcmlnaHQ7CiBpbnQgY29udGVudDsKCiBUbm9kZSAoaW50IGl0ZW0gPSAwKSB7CiAgICB0aGlzLT5jb250ZW50ID0gaXRlbTsKICAgIGxlZnQgPSBudWxscHRyOwogICAgcmlnaHQgPSBudWxscHRyOwp9fTsKCgpjbGFzcyBLclRyZWUgewpwcml2YXRlOgpUbm9kZSogcm9vdDsKCnZvaWQgcHJpbnRIZWxwZXIgKFRub2RlKiByb290KSB7CiAgICBpZighcm9vdCkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIHByaW50SGVscGVyKHJvb3QtPmxlZnQpOwogICAgY291dCA8PCByb290LT5jb250ZW50IDw8ICIgIjsKICAgIHByaW50SGVscGVyKHJvb3QtPnJpZ2h0KTsKfQoKdm9pZCBhZGRIZWxwZXIgKFRub2RlICpyb290LCBpbnQgaXRlbSkgewogICAgaWYgKHJvb3QtPmNvbnRlbnQgPCBpdGVtKSB7CiAgICAgICAgaWYgKHJvb3QtPnJpZ2h0KSB7CiAgICAgICAgICAgIGFkZEhlbHBlcihyb290LT5yaWdodCwgaXRlbSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcm9vdC0+cmlnaHQgPSBuZXcgVG5vZGUgKGl0ZW0pOwogICAgICAgIH0KCiAgICB9ZWxzZSB7CiAgICAgICAgaWYgKHJvb3QtPmxlZnQpIHsKICAgICAgICAgICAgYWRkSGVscGVyKHJvb3QtPmxlZnQsIGl0ZW0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJvb3QtPmxlZnQgPSBuZXcgVG5vZGUgKGl0ZW0pOwogICAgICAgIH0KICAgIH0KfQoKcHVibGljOgogICAgS3JUcmVlICgpewogICAgfQoKdm9pZCBhZGRUcmVlTm9kZSAoaW50IGl0ZW0pIHsKICAgIGlmIChyb290KXsKICAgICAgICB0aGlzLT5hZGRIZWxwZXIocm9vdCwgaXRlbSk7CiAgICB9IGVsc2UgewogICAgICAgIHJvb3QgPSBuZXcgVG5vZGUoaXRlbSk7CiAgICB9Cn0KCnZvaWQgdG5vZGVzX2NvdW50ICgpIHsKCn0KCnZvaWQgZGVsZXRlVHJlZU5vZGUgKCkgewoKfQoKdm9pZCBwcmludFRyZWUgKCkgewogICAgcHJpbnRIZWxwZXIgKHRoaXMtPnJvb3QpOwp9Cgp+S3JUcmVlICgpe30KCn07CgppbnQgbWFpbigpIHsKCUtyVHJlZSogdHJlZSA9IG5ldyBLclRyZWUoKTsKCXRyZWUtPnByaW50VHJlZSgpOwoJdHJlZS0+YWRkVHJlZU5vZGUoNyk7Cgl0cmVlLT5hZGRUcmVlTm9kZSgyKTsKCXRyZWUtPmFkZFRyZWVOb2RlKDEwKTsKCXRyZWUtPmFkZFRyZWVOb2RlKDEpOwoJdHJlZS0+YWRkVHJlZU5vZGUoNSk7Cgl0cmVlLT5hZGRUcmVlTm9kZSg5KTsKCXRyZWUtPmFkZFRyZWVOb2RlKDIwKTsKCgl0cmVlLT5wcmludFRyZWUoKTsKCglyZXR1cm4gMDsKfQ==