HERE IS THE CODE
#include <stdio.h>
#include <stdlib.h>
struct node {
struct node *leftChild;
char data;
struct node *rightChild;
};
struct node * buildTree(int);
void inorderTraversal(struct node *);
void preorderTraversal(struct node *);
void postorderTraversal(struct node *);
char treeArray[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', '\0', '\0','H', '\0',
'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'};
int main() {
struct node *root;
root = buildTree(0);
printf("In order traversal \n");
inorderTraversal(root);
printf("\nPre order traversal \n");
preorderTraversal(root);
printf("\nPost order traversal \n");
postorderTraversal(root);
return 0;
}
struct node * buildTree(int index) {
struct node *temp = NULL;
if (treeArray[index] != '\0') {
temp = (struct node *)malloc(sizeof(struct node));
temp -> data = treeArray[index];
temp -> leftChild = buildTree(2*index + 1);
temp -> rightChild = buildTree(2*index + 2);
}
return temp;
}
void inorderTraversal(struct node *root) {
if (root != NULL) {
if (root->leftChild != NULL) {
inorderTraversal(root->leftChild);
}
printf("%c\t", root->data);
if (root->rightChild != NULL) {
inorderTraversal(root->rightChild);
}
}
}
void preorderTraversal(struct node *root) {
if (root != NULL) {
printf("%c\t", root -> data);
preorderTraversal(root -> leftChild);
preorderTraversal(root -> rightChild);
}
}
void postorderTraversal(struct node *root) {
if (root == NULL) {
return;
}
if (root -> leftChild != NULL) {
postorderTraversal(root -> leftChild);
}
if (root -> rightChild != NULL) {
postorderTraversal(root -> rightChild);
}
printf("%c\t", root -> data);
}
No comments:
Post a Comment