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

Write a C++ program to perform the following operations: It first prompts the us

ID: 3583103 • Letter: W

Question

Write a C++ program to perform the following operations: It first prompts the user to input a sequence of integers to construct a binary search tree, in which each node has an additional field left Size. The definition of leftSize is the same as given in the textbook. Print out the values of left Size by level-order traversal, i.e. level by level and from left to right in each level. After the tree is constructed, allow a user to submit the following queries: The average of the SMALLEST k elements. If k exceeds the number of elements in the tree, return -1. The average of the LARGEST k elements. If k exceeds the number of elements in the tree, return-1. The median element of the entire BST. If the number of elements in the tree is even, return the average of the two median elements.

Explanation / Answer

#include<iostream.h>

struct node

{

    int data;

    struct node *left, *right;

};

// A utility function to create a new Binary Tree node

struct node *newNode(int item)

{

    struct node *temp = (struct node *)malloc(sizeof(struct node));

    temp->data = item;

    temp->left = temp->right = NULL;

    return temp;

}

// Recursive function to print left view of a binary tree.

void leftViewUtil(struct node *root, int level, int *max_level)

{

    // Base Case

    if (root==NULL) return;

    // If this is the first node of its level

    if (*max_level < level)

    {

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

        *max_level = level;

    }

    // Recur for left and right subtrees

    leftViewUtil(root->left, level+1, max_level);

    leftViewUtil(root->right, level+1, max_level);

}

// A wrapper over leftViewUtil()

void leftView(struct node *root)

{

    int max_level = 0;

    leftViewUtil(root, 1, &max_level);

}

// Driver Program to test above functions

int main()

{

    struct node *root = newNode(12);

    root->left = newNode(10);

    root->right = newNode(30);

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

    root->right->right = newNode(40);

    leftView(root);

    return 0;

}

#include<iostream.h>

struct node

{

    int data;

    struct node *left, *right;

};

// A utility function to create a new Binary Tree node

struct node *newNode(int item)

{

    struct node *temp = (struct node *)malloc(sizeof(struct node));

    temp->data = item;

    temp->left = temp->right = NULL;

    return temp;

}

// Recursive function to print left view of a binary tree.

void leftViewUtil(struct node *root, int level, int *max_level)

{

    // Base Case

    if (root==NULL) return;

    // If this is the first node of its level

    if (*max_level < level)

    {

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

        *max_level = level;

    }

    // Recur for left and right subtrees

    leftViewUtil(root->left, level+1, max_level);

    leftViewUtil(root->right, level+1, max_level);

}

// A wrapper over leftViewUtil()

void leftView(struct node *root)

{

    int max_level = 0;

    leftViewUtil(root, 1, &max_level);

}

// Driver Program to test above functions

int main()

{

    struct node *root = newNode(12);

    root->left = newNode(10);

    root->right = newNode(30);

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

    root->right->right = newNode(40);

    leftView(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