Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

________________________________________________________________________________

ID: 3699516 • Letter: #

Question

__________________________________________________________________________________________________________________________________________________

Code so Far:

#include
#include
#include

struct myTree {
    int val;
    struct myTree *right, *left;
};

typedef struct myTree _node;

void insert(_node*(*tree), _node* item)
{
    if (!(*tree)) {
        *tree = item;
        return;
    }
    if (item->val < (*tree)->val)
        insert(&(*tree)->left, item);

    else if (item->val > (*tree)->val)
        insert(&(*tree)->right, item);
}
void traverse(_node* tree)
{
    if (tree->left != NULL)
        traverse(tree->left);
    printf("%d ", tree->val);
    if (tree->right != NULL)
        traverse(tree->right);
}
void postorder(_node* tree)
{
    if (tree->left != NULL)
        postorder(tree->left);
    if (tree->right != NULL)
        postorder(tree->right);
    printf("%d ", tree->val);
}
void preorder(_node* tree)
{
    printf("%d ", tree->val);
    if (tree->left != NULL)
        preorder(tree->left);
    if (tree->right != NULL)
        preorder(tree->right);
}
void main()
{
    _node *current, *root;
    int i;
    int x;
    root = NULL;

    for (i = 0; i <= 6; i++) {
        current = (_node*)malloc(sizeof(_node));
        current->left = current->right = NULL;
        printf(" Enter a value for the tree ");
        scanf("%d",&x);
        current->val = x;
        insert(&root, current);
    }
    printf(" Inorder traversal ");
    traverse(root);
    printf(" Preorder traversal ");
    preorder(root);
    printf(" Postorder traversal ");
    postorder(root);

Explanation / Answer

#include <stdio.h>
#include <stdlib.h>
//#include

struct myTree {
int val;
struct myTree *right, *left;
};

typedef struct myTree _node;

void insert(_node*(*tree), _node* item)
{
if (!(*tree)) {
*tree = item;
return;
}
if (item->val < (*tree)->val)
insert(&(*tree)->left, item);

else if (item->val > (*tree)->val)
insert(&(*tree)->right, item);
}
void traverse(_node* tree)
{
if (tree->left != NULL)
traverse(tree->left);
printf("%d ", tree->val);
if (tree->right != NULL)
traverse(tree->right);
}
void postorder(_node* tree)
{
if (tree->left != NULL)
postorder(tree->left);
if (tree->right != NULL)
postorder(tree->right);
printf("%d ", tree->val);
}
void preorder(_node* tree)
{
printf("%d ", tree->val);
if (tree->left != NULL)
preorder(tree->left);
if (tree->right != NULL)
preorder(tree->right);
}
void main()
{
_node *current, *root;
int i;
int x;
root = NULL;
FILE *file = fopen("data.txt", "r");
while (fscanf(file, "%d", &x) == 1) {
printf("%d ",x);
current = (_node*)malloc(sizeof(_node));
current->left = current->right = NULL;
current->val = x;
insert(&root, current);
}
printf(" Inorder traversal ");
traverse(root);
printf(" Preorder traversal ");
preorder(root);
printf(" Postorder traversal ");
postorder(root);
}