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

Tree Code Be sure to fully test and document all of your code. A. Write a C++ pr

ID: 3889452 • Letter: T

Question

Tree Code Be sure to fully test and document all of your code.  

A. Write a C++ program to store a tree as an array. In your test program, be sure to print the array values, and to print the values in tree“format”.

B. Write a function to add an element to an existing tree.

C. Write a function to delete an element from an existing tree.

D. Write a function to perform an “in-order” traversal on an existing tree.

E. Write a function to perform an “pre-order” traversal on an existing tree.

F Write a function to perform an “post-order” traversal on an existing tree.

G Write a function to perform an “level-order” traversal on an existing tree.

H Write a function to find the children of a specified node.

I Write a function to find the parent of a specified node.

When answering the question, could code it in the simplest way possible and include comments explaining the code. Thank you!

Explanation / Answer

// Recursive C program for level order traversal of Binary Tree

#include <stdio.h>

#include <stdlib.h>

/* A binary tree node has data, pointer to left child

   and a pointer to right child */

struct node

{

    int data;

    struct node* left, *right;

};

/* Function protoypes */

void printGivenLevel(struct node* root, int level);

int height(struct node* node);

struct node* newNode(int data);

/* Function to print level order traversal a tree*/

void printLevelOrder(struct node* root)

{

    int h = height(root);

    int i;

    for (i=1; i<=h; i++)

        printGivenLevel(root, i);

}

/* Print nodes at a given level */

void printGivenLevel(struct node* root, int level)

{

    if (root == NULL)

        return;

    if (level == 1)

        printf("%d ", root->data);

    else if (level > 1)

    {

        printGivenLevel(root->left, level-1);

        printGivenLevel(root->right, level-1);

    }

}

/* Compute the "height" of a tree -- the number of

    nodes along the longest path from the root node

    down to the farthest leaf node.*/

int height(struct node* node)

{

    if (node==NULL)

        return 0;

    else

    {

        /* compute the height of each subtree */

        int lheight = height(node->left);

        int rheight = height(node->right);

        /* use the larger one */

        if (lheight > rheight)

            return(lheight+1);

        else return(rheight+1);

    }

}

/* Helper function that allocates a new node with the

   given data and NULL left and right pointers. */

struct node* newNode(int data)

{

    struct node* node = (struct node*)

                        malloc(sizeof(struct node));

    node->data = data;

    node->left = NULL;

    node->right = NULL;

    return(node);

}

/* Driver program to test above functions*/

int main()

{

    struct node *root = newNode(1);

    root->left        = newNode(2);

    root->right       = newNode(3);

    root->left->left = newNode(4);

    root->left->right = newNode(5);

    printf("Level Order traversal of binary tree is ");

    printLevelOrder(root);

    return 0;

}

// Recursive C program for level order traversal of Binary Tree

#include <stdio.h>

#include <stdlib.h>

/* A binary tree node has data, pointer to left child

   and a pointer to right child */

struct node

{

    int data;

    struct node* left, *right;

};

/* Function protoypes */

void printGivenLevel(struct node* root, int level);

int height(struct node* node);

struct node* newNode(int data);

/* Function to print level order traversal a tree*/

void printLevelOrder(struct node* root)

{

    int h = height(root);

    int i;

    for (i=1; i<=h; i++)

        printGivenLevel(root, i);

}

/* Print nodes at a given level */

void printGivenLevel(struct node* root, int level)

{

    if (root == NULL)

        return;

    if (level == 1)

        printf("%d ", root->data);

    else if (level > 1)

    {

        printGivenLevel(root->left, level-1);

        printGivenLevel(root->right, level-1);

    }

}

/* Compute the "height" of a tree -- the number of

    nodes along the longest path from the root node

    down to the farthest leaf node.*/

int height(struct node* node)

{

    if (node==NULL)

        return 0;

    else

    {

        /* compute the height of each subtree */

        int lheight = height(node->left);

        int rheight = height(node->right);

        /* use the larger one */

        if (lheight > rheight)

            return(lheight+1);

        else return(rheight+1);

    }

}

/* Helper function that allocates a new node with the

   given data and NULL left and right pointers. */

struct node* newNode(int data)

{

    struct node* node = (struct node*)

                        malloc(sizeof(struct node));

    node->data = data;

    node->left = NULL;

    node->right = NULL;

    return(node);

}

/* Driver program to test above functions*/

int main()

{

    struct node *root = newNode(1);

    root->left        = newNode(2);

    root->right       = newNode(3);

    root->left->left = newNode(4);

    root->left->right = newNode(5);

    printf("Level Order traversal of binary tree is ");

    printLevelOrder(root);

    return 0;

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote