Code:
#include <stdio.h>#include <stdlib.h>
typedef struct Node node;
struct Node{
unsigned int value;
struct Node* left;
unsigned int left_edge : 1;
struct Node* right;
unsigned int right_edge : 1;
};
void print_tree(node* root){
printf("%s = %d\n", "value of node ", root->value);
if (root->left_edge != NULL){
print_tree(root->left_edge);
}
if (root->right_edge != NULL){
print_tree(root->right_edge);
}
}
int main(){
node a = {1,NULL,NULL};
node b = {2,NULL,NULL};
node c = {3,NULL,NULL};
node d = {4,NULL,NULL};
node e = {5,NULL,NULL};
node f = {6,NULL,NULL};
node g = {7,NULL,NULL};
node h = {8,NULL,NULL};
node inner_3 = {0, &a, &b, 0, 1};
node inner_4 = {0, &c, &d, 1, 0};
node inner_5 = {0, &e, &f, 1, 0};
node inner_6 = {0, &g, &h, 1, 0};
node inner_2 = {0, &inner_5, &inner_6, 1, 0};
node* inner_1 = malloc(sizeof(node));
inner_1->value = 2;
inner_1->left_edge = &inner_3;
inner_1->right_edge = &inner_4;
inner_1->left_edge = 1;
node root = {0, &inner_1, &inner_2, 0, 1};
print_tree(&root);
return 0;
}