Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  BT.c
Language: C/C++
Code:
#include <stdio.h>
#include <stdlib.h>

#define BT_SUCCESS (0)
#define BT_FAILURE (-1)

#define BT_DBG_PRINT(x) printf ("%s %d> ", __FILE__, __LINE__); printf x;
#define BT_ERR_PRINT(x) printf ("%s %d> ", __FILE__, __LINE__); printf x;
#define BT_WARN_PRINT(x) printf ("%s %d> ", __FILE__, __LINE__); printf x;
#define BT_PRINT(x)  printf x;

typedef struct node {
   struct node *left;
   struct node *right;
   int data;
}NODE;

int insert_node_rec_in_BT(NODE **leaf, int data);
int insert_node_in_BT(NODE **leaf, int data);

int print_bt_print_bt_preorder(NODE *pstHead);
int print_bt_print_bt_inorder(NODE *pstHead);
int print_bt_print_bt_postorder(NODE *pstHead);


int main()
{
    NODE *pstHead = NULL;
     char a;
     int data[] = {10, 6,14,5,8,11,18};
     int loop = 0;
     
     for (loop =0; loop < sizeof(data) / sizeof(data[0]); loop++) {
          insert_node_in_BT(&pstHead, data[loop]);
     }
    
     print_bt_print_bt_preorder(pstHead);
    print_bt_print_bt_inorder(pstHead);
     print_bt_print_bt_postorder(pstHead);

        a = getchar();     

    return 0;
}

int insert_node_rec_in_BT(NODE **leaf, int data)
{
    if( *leaf == 0 )
    {
        *leaf = (struct NODE*) malloc( sizeof( struct NODE ) );
        (*leaf)->key_value = key;
        /* initialize the children to null */
        (*leaf)->left = 0;    
        (*leaf)->right = 0;  
    }
    else if(key < (*leaf)->key_value)
    {
        insert( key, &(*leaf)->left );
    }
    else if(key > (*leaf)->key_value)
    {
        insert( key, &(*leaf)->right );
    }
}

/*
 This function displays the tree in print_bt_preorder fashion
 */
void print_bt_preorder(NODE *temp) {
   if (temp != NULL) {
      BT_PRINT(("%d", temp->data));
      print_bt_preorder(temp->left);
      print_bt_preorder(temp->right);
   }
}

/*
 This function displays the tree in print_bt_inorder fashion
 */
void print_bt_inorder(NODE *temp) {
   if (temp != NULL) {
      print_bt_inorder(temp->left);
      BT_PRINT(("%d", temp->data));
      print_bt_inorder(temp->right);
   }
}
 
/*
 This function displays the tree in print_bt_postorder fashion
 */
void print_bt_postorder(NODE *temp) {
   if (temp != NULL) {
      print_bt_postorder(temp->left);
      print_bt_postorder(temp->right);
      BT_PRINT(("%d", temp->data));
   }
}

          
          
Comments: