/*
* File: bstfrompostorder.c
* Author: srkrishnan
*
* Created on June 30, 2011, 8:29 PM
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct Tnode {
int data;
struct Tnode *left;
struct Tnode *right;
} Tnode;
Tnode* createtreenode(int data)
{
Tnode
*n
=(Tnode
*)malloc(sizeof(Tnode
)); n->left=NULL;
n->right=NULL;
n->data=data;
return n;
}
Tnode *constructBSTfrompostorder(Tnode *root,int a[],int n)
{
int i=0;
Tnode *t=NULL;
for(i=n-1;i>=0;i--)
{
t=root;
if(root==NULL)
{
root=createtreenode(a[i]);
continue;
}
while(root!=NULL)
{
if(a[i]>root->data)
{
if(root->right==NULL)
{
root->right=createtreenode(a[i]);
break;
}
root=root->right;
}
else
{
if(root->left==NULL)
{
root->left=createtreenode(a[i]);
break;
}
root=root->left;
}
}
root=t;
}
return root;
}
void postorder(Tnode *root)
{
if(root==NULL)
return;
postorder(root->left);
postorder(root->right);
}
int main(int argc, char** argv) {
Tnode *root=NULL;
/*root = createtreenode(15);
root->left = createtreenode(7);
root->right = createtreenode(25);
root->left->left = createtreenode(3);
root->left->right = createtreenode(10);
root->right->left = NULL;
root->right->right = createtreenode(50);
root->left->right->left = createtreenode(8);
root->left->right->right = createtreenode(12);
root->left->right->left->left = NULL;
root->left->right->left->right = createtreenode(9);
root->left->right->right->left = createtreenode(11);
root->left->right->right->right = createtreenode(14);
root->right->right->left = createtreenode(30);
root->right->right->right = createtreenode(55);
root->right->right->right->left = createtreenode(52);
root->right->right->right->right = NULL;*/
//postorder(root);
int a[]={3,9,8,11,14,12,10,7,30,52,55,50,25,15};
root=constructBSTfrompostorder(root,a,14);
postorder(root);
return (EXIT_SUCCESS);
}
LyogCiAqIEZpbGU6ICAgYnN0ZnJvbXBvc3RvcmRlci5jCiAqIEF1dGhvcjogc3JrcmlzaG5hbgogKgogKiBDcmVhdGVkIG9uIEp1bmUgMzAsIDIwMTEsIDg6MjkgUE0KICovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdHlwZWRlZiBzdHJ1Y3QgVG5vZGUgewogICAgaW50IGRhdGE7CiAgICBzdHJ1Y3QgVG5vZGUgKmxlZnQ7CiAgICBzdHJ1Y3QgVG5vZGUgKnJpZ2h0Owp9IFRub2RlOwoKVG5vZGUqIGNyZWF0ZXRyZWVub2RlKGludCBkYXRhKQp7CiAgICBUbm9kZSAqbj0oVG5vZGUqKW1hbGxvYyhzaXplb2YoVG5vZGUpKTsKICAgIG4tPmxlZnQ9TlVMTDsKICAgIG4tPnJpZ2h0PU5VTEw7CiAgICBuLT5kYXRhPWRhdGE7CiAgICByZXR1cm4gbjsKfQoKVG5vZGUgKmNvbnN0cnVjdEJTVGZyb21wb3N0b3JkZXIoVG5vZGUgKnJvb3QsaW50IGFbXSxpbnQgbikKewogICAgaW50IGk9MDsKICAgIFRub2RlICp0PU5VTEw7CiAgICBmb3IoaT1uLTE7aT49MDtpLS0pCiAgICB7CiAgICAgICAgdD1yb290OwogICAgICAgIGlmKHJvb3Q9PU5VTEwpCiAgICAgICAgewogICAgICAgICAgICByb290PWNyZWF0ZXRyZWVub2RlKGFbaV0pOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgd2hpbGUocm9vdCE9TlVMTCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKGFbaV0+cm9vdC0+ZGF0YSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYocm9vdC0+cmlnaHQ9PU5VTEwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcm9vdC0+cmlnaHQ9Y3JlYXRldHJlZW5vZGUoYVtpXSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByb290PXJvb3QtPnJpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYocm9vdC0+bGVmdD09TlVMTCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICByb290LT5sZWZ0PWNyZWF0ZXRyZWVub2RlKGFbaV0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcm9vdD1yb290LT5sZWZ0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJvb3Q9dDsKICAgIH0KICAgIHJldHVybiByb290Owp9Cgp2b2lkIHBvc3RvcmRlcihUbm9kZSAqcm9vdCkKewogICAgaWYocm9vdD09TlVMTCkKICAgICAgICByZXR1cm47CiAgICBwb3N0b3JkZXIocm9vdC0+bGVmdCk7CiAgICBwb3N0b3JkZXIocm9vdC0+cmlnaHQpOwogICAgcHJpbnRmKCIlZCwiLHJvb3QtPmRhdGEpOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKCiAgICBUbm9kZSAqcm9vdD1OVUxMOwoKICAgIC8qcm9vdCA9IGNyZWF0ZXRyZWVub2RlKDE1KTsKCiAgICByb290LT5sZWZ0ID0gY3JlYXRldHJlZW5vZGUoNyk7CiAgICByb290LT5yaWdodCA9IGNyZWF0ZXRyZWVub2RlKDI1KTsKCiAgICByb290LT5sZWZ0LT5sZWZ0ID0gY3JlYXRldHJlZW5vZGUoMyk7CiAgICByb290LT5sZWZ0LT5yaWdodCA9IGNyZWF0ZXRyZWVub2RlKDEwKTsKCiAgICByb290LT5yaWdodC0+bGVmdCA9IE5VTEw7CiAgICByb290LT5yaWdodC0+cmlnaHQgPSBjcmVhdGV0cmVlbm9kZSg1MCk7CgogICAgcm9vdC0+bGVmdC0+cmlnaHQtPmxlZnQgPSBjcmVhdGV0cmVlbm9kZSg4KTsKICAgIHJvb3QtPmxlZnQtPnJpZ2h0LT5yaWdodCA9IGNyZWF0ZXRyZWVub2RlKDEyKTsKCiAgICByb290LT5sZWZ0LT5yaWdodC0+bGVmdC0+bGVmdCA9IE5VTEw7CiAgICByb290LT5sZWZ0LT5yaWdodC0+bGVmdC0+cmlnaHQgPSBjcmVhdGV0cmVlbm9kZSg5KTsKCiAgICByb290LT5sZWZ0LT5yaWdodC0+cmlnaHQtPmxlZnQgPSBjcmVhdGV0cmVlbm9kZSgxMSk7CiAgICByb290LT5sZWZ0LT5yaWdodC0+cmlnaHQtPnJpZ2h0ID0gY3JlYXRldHJlZW5vZGUoMTQpOwoKICAgIHJvb3QtPnJpZ2h0LT5yaWdodC0+bGVmdCA9IGNyZWF0ZXRyZWVub2RlKDMwKTsKICAgIHJvb3QtPnJpZ2h0LT5yaWdodC0+cmlnaHQgPSBjcmVhdGV0cmVlbm9kZSg1NSk7CgogICAgcm9vdC0+cmlnaHQtPnJpZ2h0LT5yaWdodC0+bGVmdCA9IGNyZWF0ZXRyZWVub2RlKDUyKTsKICAgIHJvb3QtPnJpZ2h0LT5yaWdodC0+cmlnaHQtPnJpZ2h0ID0gTlVMTDsqLwogICAgCiAgICAvL3Bvc3RvcmRlcihyb290KTsKICAgIAogICAgaW50IGFbXT17Myw5LDgsMTEsMTQsMTIsMTAsNywzMCw1Miw1NSw1MCwyNSwxNX07CiAgICByb290PWNvbnN0cnVjdEJTVGZyb21wb3N0b3JkZXIocm9vdCxhLDE0KTsKICAgIHBvc3RvcmRlcihyb290KTsKICAgIHJldHVybiAoRVhJVF9TVUNDRVNTKTsKfQo=
3,9,8,11,14,12,10,7,30,52,55,50,25,15,