________________________________________________________________________________
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);
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.