#include <stdio.h>
#define SIZE 100
int tree[SIZE];
void insertRoot(int value) {
tree[0] = value;
}
void insertLeft(int parentIndex, int value) {
int leftIndex = 2 * parentIndex + 1;
if (tree[parentIndex] == -1) {
printf("Parent does not exist!\n");
} else if (leftIndex >= SIZE) {
printf("Tree is full!\n");
} else {
tree[leftIndex] = value;
}
}
void insertRight(int parentIndex, int value) {
int rightIndex = 2 * parentIndex + 2;
if (tree[parentIndex] == -1) {
printf("Parent does not exist!\n");
} else if (rightIndex >= SIZE) {
printf("Tree is full!\n");
} else {
tree[rightIndex] = value;
}
}
void preorder(int index) {
if (index >= SIZE || tree[index] == -1){
return;
}
printf("%d ", tree[index]);
preorder(2 * index + 1);
preorder(2 * index + 2);
}
void inorder(int index) {
if (index >= SIZE || tree[index] == -1){
return;
}
inorder(2 * index + 1);
printf("%d ", tree[index]);
inorder(2 * index + 2);
}
void postorder(int index) {
if (index >= SIZE || tree[index] == -1) {
return;
}
postorder(2 * index + 1);
postorder(2 * index + 2);
printf("%d ", tree[index]);
}
int main() {
for (int i = 0; i < SIZE; i++){
tree[i] = -1;
}
insertRoot(10);
insertLeft(0, 20);
insertRight(0, 30);
insertLeft(1, 40);
insertRight(1, 50);
printf("Preorder: ");
preorder(0);
printf("\nInorder: ");
inorder(0);
printf("\nPostorder: ");
postorder(0);
printf("\n");
return 0;
}0 views