Answer Posted / abdur rab
#include <stdio.h>
#include <math.h>
struct node {
int element;
struct node* left;
struct node* right;
};
int lookup ( struct node* _node_ptr, int target_element )
{
if ( NULL == _node_ptr ) return ( 0 );
if ( target_element == _node_ptr -> element )
return ( 1 );
else {
if ( target_element < _node_ptr ->
element ) return ( lookup ( _node_ptr -> left,
target_element ) );
else return ( lookup ( _node_ptr -> right,
target_element ) );
}
}
int max_depth ( struct node* _node_ptr )
{
if ( NULL == _node_ptr ) return ( 0 );
else {
int _l_depth = max_depth ( _node_ptr ->
left );
int _r_depth = max_depth ( _node_ptr ->
right );
return ( ( _l_depth > _r_depth ) ? (
_l_depth + 1 ) : ( _r_depth + 1 ) );
}
}
struct node* create_node ( int _element )
{
struct node* _node = ( struct node* ) malloc (
sizeof (struct node) );
_node -> element = _element;
_node -> left = NULL;
_node -> right = NULL;
return ( _node );
}
struct node* insert ( struct node* _node_ptr, int _element )
{
if ( NULL== _node_ptr ) return ( create_node (
_element ) );
else {
if ( _element <= _node_ptr -> element )
_node_ptr -> left = ( insert ( _node_ptr -> left,
_element ) );
else _node_ptr -> right = ( insert (
_node_ptr -> right, _element ) );
}
return ( _node_ptr );
}
void inorder_traversal ( struct node* _node_ptr )
{
if ( NULL == _node_ptr ) return;
inorder_traversal ( _node_ptr -> left );
printf ("\n The element :%d", _node_ptr ->
element );
inorder_traversal ( _node_ptr -> right );
}
void preorder_traversal ( struct node* _node_ptr )
{
if ( NULL == _node_ptr ) return;
printf ("\n The element :%d", _node_ptr ->
element );
preorder_traversal ( _node_ptr -> left );
preorder_traversal ( _node_ptr -> right );
}
void postorder_traversal ( struct node* _node_ptr )
{
if ( NULL == _node_ptr ) return;
postorder_traversal ( _node_ptr -> left );
postorder_traversal ( _node_ptr -> right );
printf ("\n The element :%d", _node_ptr ->
element );
}
int main ( int argc, char* argv[] )
{
int* array_int, nTotalCount = 10, i;
struct node* _node_ptr = NULL;
int temp = 0;
printf ( "\n/********************** Binary Tree
********************/" );
array_int = ( int* ) malloc ( nTotalCount * sizeof
( int ) );
for ( i = 0; i < nTotalCount; i++ )
{
temp = rand() % 100 ;
array_int [i] = ( temp == 0 ) ? ( temp +
1 ) : temp;
}
printf( "\nThe Numbers in given order" );
for ( i = 0; i < nTotalCount; i++ )
printf ( "\t%d", array_int [i] );
for ( i = 0; i < nTotalCount; i++ )
_node_ptr = insert ( _node_ptr, array_int
[i] );
inorder_traversal ( _node_ptr );
printf ("\n max possible nodes :%f", pow ( 2,
max_depth ( _node_ptr ) ) );
free ( array_int [i] );
}
| Is This Answer Correct ? | 10 Yes | 15 No |
Post New Answer View All Answers
What is the difference between scanf and fscanf?
A collection of functions,calls,subroutines or other data a) library b) header files c) set of files d) textfiles
Can variables be declared anywhere in c?
Draw a flowchart to produce a printed list of all the students over the age of 20 in a class .The input records contains the name and age of students. Assume a sentinel value of 99 for the age field of the trailer record
What is echo in c programming?
What is the most efficient way to store flag values?
With the help of using classes, write a program to add two numbers.
What are the header files used in c language?
Can you mix old-style and new-style function syntax?
Explain what is a const pointer?
p*=(++q)++*--p when p=q=1 while(q<=6)
What does malloc () calloc () realloc () free () do?
What does sizeof return c?
Can include files be nested?
How will you divide two numbers in a MACRO?