Code:
#include <stdio.h>
#include <stdlib.h>
#define on 1
#define off 0
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 != NULL){
print_tree(root->left);
}
if (root->right != NULL){
print_tree(root->right);
}
}
int main(){
node a = {1,NULL,0,NULL,0};
node b = {2,NULL,0,NULL,0};
node c = {3,NULL,0,NULL,0};
node d = {4,NULL,0,NULL,0};
node e = {5,NULL,0,NULL,0};
node f = {6,NULL,0,NULL,0};
node g = {7,NULL,0,NULL,0};
node h = {8,NULL,0,NULL,0};
node inner_3 = {0, &a, 0, &b, 1};
node inner_4 = {0, &c, 1, &c, 0};
node inner_5 = {0, &e, 1, &f, 0};
node inner_6 = {0, &g, 1, &h, 0};
node inner_2 = {0, &inner_5, 1, &inner_6, 0};
// the error does not occur because I did not reserve space for the object with malloc.
node* inner_1 = malloc(sizeof(node));
inner_1->value = 2;
inner_1->left = &inner_3;
inner_1->right = &inner_4;
inner_1->left_edge = 1;
node root = {0, inner_1, 0, &inner_2, 1};
print_tree(&root);
return 0;
}