Hi all,

I am trying to generate a binary tree in C which considers all the possible combination for a number of array elements and a number of different options for each array element.

For example, consider that the array has 3 values which are the following:

And 2 different option (OPTION 1 and OPTION 2) for each array value.Code:#define NO_OF_IDS 3 Array[NO_OF_IDS] = {“ID1”, “ID2”, “ID3”}

Then the tree generated should be that:

where “1” stands for “OPTION 0” and “2” for “OPTION 1”.

I can create the above tree manually by using the code below:

where:Code:root = newNode(“ROOT”, 0); /* HEIGHT 1 */ root->left = newNode(&Array[1], 0); root->right = newNode(&Array[1], 1); /* HEIGHT 2 */ root->left->left = newNode(&Array[2], 0); root->left->right = newNode(&Array[2], 1); root->right->left = newNode(&Array[2], 0); root->right->right = newNode(&Array[2], 1); /* HEIGHT 3 */ root->left->left->left = newNode(&Array[3], 0); root->left->left->right = newNode(&Array[3], 1); root->left->right->left = newNode(&Array[3], 0); root->left->right->right = newNode(&Array[3], 1); root->right->left->left = newNode(&Array[3], 0); root->right->left->right = newNode(&Array[3], 1); root->right->right->left = newNode(&Array[3], 0); root->right->right->right = newNode(&Array[3], 1);

The question is that: Can I create the tree in a faster way for a specific ID number?Code:struct node* newNode(char *String, uint8_t OPTION) { struct node* node = (struct node*) malloc(sizeof(struct node)); node->String = String; node->OPTION = OPTION; node->left = NULL; node->right = NULL; return(node); }; struct node { char* String; struct node* left; struct node* right; uint8_t OPTION; };

Thank you all in advance.