Question 1 [5] with sample solutions

Suppose the definition of the node struct within a binary search tree is as shown below. Assume our typical binary search tree layout, i.e. smaller values go to the left.

   struct node {
      int id;      // this is the sorting key for the tree
      float data;  // additional data value associated with the key
      node *left, *right;
   };
Implement a recursive solution for the countFrequency function described below.
//  The function takes a data value and a node pointer as parameters,
//  and returns a count of how many times that value appears in the
//  data fields of nodes in the subtree.
 int countFrequency(float d, node *t);
SAMPLE SOLUTION
int countFrequency(float d, node *t)
{
   if (t == NULL) return 0;
   int sum = countFrequency(d, t->left);
   sum += countFrequency(d, t->right);
   if (t->data == d) sum++;
   return sum;
}