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

Convert into JAVA #include <time.h> /* Node in a binary search tree */ struct Tr

ID: 3581664 • Letter: C

Question

Convert into JAVA

#include <time.h>

/* Node in a binary search tree */
struct TreeNode {
   void *key;
   struct TreeNode *parent;
   struct TreeNode *left;
   struct TreeNode *right;
};

struct Tree {
   struct TreeNode *root;
};

/* Find the height of the subtree rooted at x */
int maxDepth(TreeNode *x);

/* Print the elements of the tree in ascending order */
void inorderTreeWalk(TreeNode *x, void ( *action )( void *));

/* Pointer to node with the smallest key in a subtree rooted at x */
TreeNode* treeMinimum(TreeNode *x);

/* Pointer to node with the largest key of a subtree rooted at x */
TreeNode* treeMaximum(TreeNode *x);

/* Insert a node into the tree */
void treeInsert(Tree* t, TreeNode *z, int ( *compare )( void *, void * ));

/* Find a node with the matching key value in a given node's subtree */
TreeNode* treeSearch(TreeNode *x, void *k, int ( *compare )( void *, void *));

/* Replace a node u with a node v */
void transplant(Tree *t, TreeNode *u, TreeNode *v);

/* Delete a node z from the tree */
void treeDelete(Tree* t, TreeNode* z);
#endif

Explanation / Answer

I'll provide code snippets for each step separately:

a)

# tree definition goes here

T := null | (left : tree, right : tree)

# to check if the tree is balance or not

is_balanced (T) {

    maximum_height, number_of_elements = walk( T)

    return maximum_height <= 1 + log_base_2(number_of_elements)

}

# traverse the tree

traverse (tree) {

    if tree is null

return 0,

    left_height, left_number_of_elements = traverse (tree.left )

    right_height, right_number_of_elements = traverse (tree.right)

    height = 1 + max(left_height, right_height)

    number_of_elements = left_number_of_elements + right_number_of_elements + 1

    return height, number_of_elements

}

b) Now, for second part we want to perform an in-order traversal on BST where the elements will be arranged in ascending order:

Inorder traversal - left-child, root, right-child
Since we know that the - left-child <= root <= right-child in a BST, we obtain the elements in increasing order when we do an inorder-traversal.

C)   class Node {

    int value;

    Node left, right;

Node(int n) {

        value = n;

        left = right = null;

    }

}
class BinarySearchTree {
static Node head;

/* Assuming that we are given a non-empty binary search tree, We need to return the minimum value found in tha tree. The entire tree need not to be searched. */

int minimumvalue(Node node) {
   Node current = node;

/* loop to find the leftmost leaf */

while (current.left != null) {

current = current.left;

        }

        return (current.data);

    }

(Sorry couldn't provide the complete solution to all the sub-parts as I was short on time)