Netbeans/ JAVA write this code: document every line. Create a class for a binary
ID: 3680833 • Letter: N
Question
Netbeans/ JAVA write this code: document every line.
Create a class for a binary tree named BT. Each node in the tree should have data, a reference to the node's left sub-tree, and a reference to the node's right sub-tree. For the purposes of this project, the data in the nodes can be integers. The binary tree should have a height property, a size property, which is the number of nodes in the tree, and the following methods: a null constructor a constructor that builds a tree from a specified array of integers. The tree does not need to be a balanced tree. note: remember to address the height and size properties when building a tree from a specified array. preorder - iterate (list all nodes in order according to the preorder traversal of the tree) inorder - iterate (list all nodes in order according to the inorder traversal of the tree) postorder - iterate (list all nodes in order according to the postorder traversal of the tree) search - given a key value, tell us whether or not the integer is in the tree. max - return the maximum value in the tree min - return the minimum value in the tree Test each method to ensure that it works properly.Explanation / Answer
/*
* Java Program to Implement Binary Tree
*/
import java.util.Scanner;
/* Class BTNode */
class BTNode {
BTNode left, right;
int data;
/* Constructor */
public BTNode() {
left = null;
right = null;
data = 0;
}
/* Constructor */
public BTNode(int n) {
left = null;
right = null;
data = n;
}
/* Function to set left node */
public void setLeft(BTNode n) {
left = n;
}
/* Function to set right node */
public void setRight(BTNode n) {
right = n;
}
/* Function to get left node */
public BTNode getLeft() {
return left;
}
/* Function to get right node */
public BTNode getRight() {
return right;
}
/* Function to set data to node */
public void setData(int d) {
data = d;
}
/* Function to get data from node */
public int getData() {
return data;
}
}
/* Class BT */
class BT {
private BTNode root;
/* Constructor */
public BT() {
root = null;
}
/* Function to check if tree is empty */
public boolean isEmpty() {
return root == null;
}
/* Functions to insert data */
public void insert(int data) {
root = insert(root, data);
}
/* Function to insert data recursively */
private BTNode insert(BTNode node, int data) {
if (node == null)
node = new BTNode(data);
else {
if (node.getRight() == null)
node.right = insert(node.right, data);
else
node.left = insert(node.left, data);
}
return node;
}
/* Function to count number of nodes */
public int countNodes() {
return countNodes(root);
}
/* Function to count number of nodes recursively */
private int countNodes(BTNode r) {
if (r == null)
return 0;
else {
int l = 1;
l += countNodes(r.getLeft());
l += countNodes(r.getRight());
return l;
}
}
/* Function to search for an element */
public boolean search(int val) {
return search(root, val);
}
/* Function to search for an element recursively */
private boolean search(BTNode r, int val) {
if (r.getData() == val)
return true;
if (r.getLeft() != null)
if (search(r.getLeft(), val))
return true;
if (r.getRight() != null)
if (search(r.getRight(), val))
return true;
return false;
}
/* Function for inorder traversal */
public void inorder() {
inorder(root);
}
private void inorder(BTNode r) {
if (r != null) {
inorder(r.getLeft());
System.out.print(r.getData() + " ");
inorder(r.getRight());
}
}
/* Function for preorder traversal */
public void preorder() {
preorder(root);
}
private void preorder(BTNode r) {
if (r != null) {
System.out.print(r.getData() + " ");
preorder(r.getLeft());
preorder(r.getRight());
}
}
/* Function for postorder traversal */
public void postorder() {
postorder(root);
}
private void postorder(BTNode r) {
if (r != null) {
postorder(r.getLeft());
postorder(r.getRight());
System.out.print(r.getData() + " ");
}
}
/* Function for postorder traversal */
public void minValue() {
minValue(root);
}
public void minValue(BTNode r) {
while (r.left != null) {
r = r.left;
}
System.out.print(r.getData() + " ");
}
/* Function for postorder traversal */
public void maxValue() {
maxValue(root);
}
public void maxValue(BTNode r) {
while (r.right != null) {
r = r.right;
}
System.out.print(r.getData() + " ");
}
}
Main Application :
/* Class BinaryTree */
import java.util.Scanner;
public class BinaryTree
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
/* Creating object of BT */
BT bt = new BT();
/* Perform tree operations */
System.out.println("Binary Tree Test ");
char ch;
do
{
System.out.println(" Binary Tree Operations ");
System.out.println("1. insert ");
System.out.println("2. search");
System.out.println("3. count nodes");
System.out.println("4. check empty");
int choice = scan.nextInt();
switch (choice)
{
case 1 :
System.out.println("Enter integer element to insert");
bt.insert( scan.nextInt() );
break;
case 2 :
System.out.println("Enter integer element to search");
System.out.println("Search result : "+ bt.search( scan.nextInt() ));
break;
case 3 :
System.out.println("Nodes = "+ bt.countNodes());
break;
case 4 :
System.out.println("Empty status = "+ bt.isEmpty());
break;
default :
System.out.println("Wrong Entry ");
break;
}
/* Display tree */
System.out.print(" Post order : ");
bt.postorder();
System.out.print(" Pre order : ");
bt.preorder();
System.out.print(" In order : ");
bt.inorder();
System.out.print(" Max : ");
bt.maxValue();
System.out.print(" Min : ");
bt.minValue();
System.out.println(" Do you want to continue (Type y or n) ");
ch = scan.next().charAt(0);
} while (ch == 'Y'|| ch == 'y');
}
}