#include <iostream>
using namespace std;
struct node
{
int data;
node* left;
node* right;
};
node* CreateNode (int data)
{
node* p = new node;
if (p == NULL)
{
cout<<"Khong du bo nho!"<<endl;
return NULL;
}
p->data = data;
p->left = NULL;
p->right = NULL;
return p;
}
void PreOrder (node* root)
{
if (root != NULL)
{
cout<<root->data<<" ";
PreOrder(root->left);
PreOrder(root->right);
}
}
void InOrder(node *root)
{
if (root != NULL)
{
InOrder(root->left);
cout<<root->data<<" ";
InOrder(root->right);
}
}
void PostOrder(node *root)
{
if (root != NULL)
{
PostOrder(root->left);
PostOrder(root->right);
cout<<root->data<<" ";
}
}
int main ()
{
node* root, * p1, * p2, * p3, * p4, * p5;
root = CreateNode(7);
p1 = CreateNode(5);
p2 = CreateNode(10);
p3 = CreateNode(9);
p4 = CreateNode(2);
p5 = CreateNode(3);
root->left = p1;
root->right = p2;
p1->left = p3;
p1->right = NULL;
p2->left = p4;
p2->right = p5;
p3->left = NULL;
p3->right = NULL;
p4->left = NULL;
p4->right = NULL;
p5->left = NULL;
p5->right = NULL;
PreOrder(root);
cout<<endl;
InOrder(root);
cout<<endl;
PostOrder(root);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3Qgbm9kZSAKewogICAgaW50IGRhdGE7CiAgICBub2RlKiBsZWZ0OwogICAgbm9kZSogcmlnaHQ7Cn07Cm5vZGUqIENyZWF0ZU5vZGUgKGludCBkYXRhKQp7CiAgICBub2RlKiBwID0gbmV3IG5vZGU7CiAgICBpZiAocCA9PSBOVUxMKQogICAgewogICAgICAgIGNvdXQ8PCJLaG9uZyBkdSBibyBuaG8hIjw8ZW5kbDsKICAgICAgICByZXR1cm4gTlVMTDsKICAgIH0KICAgIHAtPmRhdGEgPSBkYXRhOwogICAgcC0+bGVmdCA9IE5VTEw7CiAgICBwLT5yaWdodCA9IE5VTEw7CiAgICByZXR1cm4gcDsKfQp2b2lkIFByZU9yZGVyIChub2RlKiByb290KQp7CiAgICBpZiAocm9vdCAhPSBOVUxMKQogICAgewogICAgICAgIGNvdXQ8PHJvb3QtPmRhdGE8PCIgICI7CiAgICAgICAgUHJlT3JkZXIocm9vdC0+bGVmdCk7CiAgICAgICAgUHJlT3JkZXIocm9vdC0+cmlnaHQpOwogICAgfQp9CnZvaWQgSW5PcmRlcihub2RlICpyb290KQp7CiAgICBpZiAocm9vdCAhPSBOVUxMKQogICAgewogICAgICAgIEluT3JkZXIocm9vdC0+bGVmdCk7CiAgICAgICAgY291dDw8cm9vdC0+ZGF0YTw8IiAgIjsKICAgICAgICBJbk9yZGVyKHJvb3QtPnJpZ2h0KTsKICAgIH0KfQp2b2lkIFBvc3RPcmRlcihub2RlICpyb290KQp7CiAgICBpZiAocm9vdCAhPSBOVUxMKQogICAgewogICAgICAgIFBvc3RPcmRlcihyb290LT5sZWZ0KTsKICAgICAgICBQb3N0T3JkZXIocm9vdC0+cmlnaHQpOwogICAgICAgIGNvdXQ8PHJvb3QtPmRhdGE8PCIgICI7ICAgIAogICAgfQp9CmludCBtYWluICgpCnsKICAgIG5vZGUqIHJvb3QsICogcDEsICogcDIsICogcDMsICogcDQsICogcDU7Cglyb290ID0gQ3JlYXRlTm9kZSg3KTsKCXAxID0gQ3JlYXRlTm9kZSg1KTsKCXAyID0gQ3JlYXRlTm9kZSgxMCk7CglwMyA9IENyZWF0ZU5vZGUoOSk7CglwNCA9IENyZWF0ZU5vZGUoMik7CglwNSA9IENyZWF0ZU5vZGUoMyk7CgogICAgcm9vdC0+bGVmdCA9IHAxOwogICAgcm9vdC0+cmlnaHQgPSBwMjsKICAgIHAxLT5sZWZ0ID0gcDM7CiAgICBwMS0+cmlnaHQgPSBOVUxMOwogICAgcDItPmxlZnQgPSBwNDsKICAgIHAyLT5yaWdodCA9IHA1OwogICAgcDMtPmxlZnQgPSBOVUxMOwogICAgcDMtPnJpZ2h0ID0gTlVMTDsKICAgIHA0LT5sZWZ0ID0gTlVMTDsKICAgIHA0LT5yaWdodCA9IE5VTEw7CiAgICBwNS0+bGVmdCA9IE5VTEw7CiAgICBwNS0+cmlnaHQgPSBOVUxMOwoKICAgIFByZU9yZGVyKHJvb3QpOwogICAgY291dDw8ZW5kbDsKICAgIEluT3JkZXIocm9vdCk7CiAgICBjb3V0PDxlbmRsOwogICAgUG9zdE9yZGVyKHJvb3QpOwogICAgcmV0dXJuIDA7Cn0=