#include<stdio.h>

#include<stdlib.h>

struct node{

    int data;

    struct node *right,*left;

}*root=NULL;

int max=0;

struct node *newnode(int k){

    struct node *temp=(struct node *)malloc(sizeof(struct node));

    temp->data=k;

    temp->right=temp->left=NULL;

    return temp;

}

void height(struct node *root,int d){

    if(root==NULL){

        return;

    }

    printf("Node:%d,Height: %d\n",root->data,d);

    if(d>max){

        max=d;

    }

    height(root->left,++d);

    //here actually ++d and then --d thats why i have used d in next step

    // --d to go up ++d to go right

    height(root->right,d);

    --d;

     

     

     

}

int main(){

    root = newnode(1);

    root->left = newnode(5);

    root->right = newnode(8);

    root->left->left = newnode(2);

    root->left->right = newnode(4);

    root->right->left = newnode(9);

    root->right->right = newnode(10);

    root->right->right->right= newnode(13);

  

    height(root,0);

    printf("\nHeight: %d",max);

    return 0;


}