#include<stdio.h>
#include<stdlib.h>
struct node {
int data;
struct node * left;
struct node * right;
} ;
struct node * newNode( int item)
{
struct node
* node
= ( struct node
* ) malloc ( sizeof ( struct node
) ) ; node-> data = item;
node-> left = NULL;
node-> right = NULL;
return node;
} ;
void printPostorder( struct node * node)
{
if ( node == NULL)
return ;
printPostorder( node-> left) ;
printPostorder( node-> right) ;
}
void deleteTree( struct node * node)
{
if ( node == NULL)
return ;
deleteTree( node-> left) ;
deleteTree( node-> right) ;
printf ( "\n node being deleted:%d\n " , node
-> data
) ; }
int main( )
{
struct node * root = newNode( 1 ) ;
root-> left = newNode( 2 ) ;
root-> right = newNode( 3 ) ;
root-> left-> left = newNode( 4 ) ;
root-> left-> right = newNode( 5 ) ;
printf ( "\n Postorder traversal of binary tree was \n " ) ; printPostorder( root) ;
deleteTree( root) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3Qgbm9kZSB7CiAgICAgICAgaW50IGRhdGE7CiAgICAgICAgc3RydWN0IG5vZGUgKiBsZWZ0OwogICAgICAgIHN0cnVjdCBub2RlICogcmlnaHQ7CiAgICAgICAgfTsKCnN0cnVjdCBub2RlICogbmV3Tm9kZShpbnQgaXRlbSkKewogICAgc3RydWN0IG5vZGUgKiBub2RlID0gKHN0cnVjdCBub2RlICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IG5vZGUpKTsKICAgIG5vZGUtPmRhdGEgPSBpdGVtOwogICAgbm9kZS0+bGVmdCA9IE5VTEw7CiAgICBub2RlLT5yaWdodCA9IE5VTEw7CiAgICByZXR1cm4gbm9kZTsKfTsKCnZvaWQgcHJpbnRQb3N0b3JkZXIoc3RydWN0IG5vZGUgKiBub2RlKQp7CiAgICBpZihub2RlID09IE5VTEwpCiAgICAgICAgcmV0dXJuOwogICAgcHJpbnRQb3N0b3JkZXIobm9kZS0+bGVmdCk7CiAgICBwcmludFBvc3RvcmRlcihub2RlLT5yaWdodCk7CiAgICBwcmludGYoIiVkICAiLG5vZGUtPmRhdGEpOwp9Cgp2b2lkIGRlbGV0ZVRyZWUoc3RydWN0IG5vZGUgKiBub2RlKQp7CiAgICBpZihub2RlID09IE5VTEwpCiAgICAgICAgcmV0dXJuOwogICAgZGVsZXRlVHJlZShub2RlLT5sZWZ0KTsKICAgIGRlbGV0ZVRyZWUobm9kZS0+cmlnaHQpOwogICAgcHJpbnRmKCJcbm5vZGUgYmVpbmcgZGVsZXRlZDolZFxuIiAsIG5vZGUtPmRhdGEpOwogICAgZnJlZShub2RlKTsKfQoKCmludCBtYWluKCkKewogICAgc3RydWN0IG5vZGUgKnJvb3QgID0gbmV3Tm9kZSgxKTsKICAgIHJvb3QtPmxlZnQgICAgICAgICAgICAgPSBuZXdOb2RlKDIpOwogICAgcm9vdC0+cmlnaHQgICAgICAgICAgID0gbmV3Tm9kZSgzKTsKICAgIHJvb3QtPmxlZnQtPmxlZnQgICAgID0gbmV3Tm9kZSg0KTsKICAgIHJvb3QtPmxlZnQtPnJpZ2h0ICAgPSBuZXdOb2RlKDUpOwogICAgcHJpbnRmKCJcbiBQb3N0b3JkZXIgdHJhdmVyc2FsIG9mIGJpbmFyeSB0cmVlIHdhcyBcbiIpOwogICAgcHJpbnRQb3N0b3JkZXIocm9vdCk7CiAgICBkZWxldGVUcmVlKHJvb3QpOwogICAgcmV0dXJuIDA7Cn0KCgoK