typedef struct node{ int data; struct node *left_child; struct node *right_child; } NODE; NODE node_array[7] = { /* 0 */ { 45 , &node_array[1] , &node_array[2] }, /* 1 */ { 25 , &node_array[3] , &node_array[4] }, /* 2 */ { 64 , &node_array[5] , &node_array[6] }, /* 3 */ { 10 , NULL , NULL }, /* 4 */ { 32 , NULL , NULL }, /* 5 */ { 53 , NULL , NULL }, /* 6 */ { 79 , NULL , NULL } }; int main(){ binary_search(node_array,33); } int binary_search( NODE *ptr, int item ){ if( ptr == NULL ) return( 0 ); else if( ptr->data == item ) return( 1 ); else if( item < ptr->data ) return( binary_search( ptr->left_child, item )); else return( binary_search( ptr->right_child, item )); } ---- decorate with print statements and run trace: binary tree data structure - addr: < data , addr_lc , addr_rc > 20bb8:<45,20bc4,20bd0> / \ 20bc4:<25,20bdc,20be8> 20bd0:<64,20bf4,20c00> / \ / \ 20bdc:<10,0,0> 20be8:<32,0,0> 20bf4:<53,0,0> 20c00:<79,0,0> call to binary search with item = 33 enter subroutine with ptr=20bb8 and item=33 ptr->node: data=45, lc=20bc4, rc=20bd0 itemnode: data=25, lc=20bdc, rc=20be8 item>data! follow right_child enter subroutine with ptr=20be8 and item=33 ptr->node: data=32, lc=0, rc=0 item>data! follow right_child enter subroutine with ptr=0 and item=33 stop! ptr is null! top level call returns: 0