Question

# You will be traversing through an integer tree to print the data. Given main(), write the...

You will be traversing through an integer tree to print the data. Given main(), write the methods in the 'IntegerBinaryTree' class specified by the // TODO: sections. There are 6 methods in all to write.

Ex: If the input is

```70
86
60
90
49
62
81
85
38
-1
```

the output should be:

```Enter whole numbers to insert into the tree, -1 to stop

Inorder: 38 - 49 - 60 - 62 - 70 - 81 - 85 - 86 - 90 -

Reverse Preorder: 70 - 86 - 90 - 81 - 85 - 60 - 62 - 49 - 38 -

Reverse Postorder: 90 - 85 - 81 - 86 - 62 - 38 - 49 - 60 - 70 - ```

Main.java

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

IntegerBinaryTree tree = new IntegerBinaryTree();

Scanner scrn = new Scanner(System.in);
System.out.println("Enter whole numbers to insert into the tree, -1 to stop");

int num = scrn.nextInt();
while(num != -1) {
tree.insertNode(num);
num = scrn.nextInt();
}
System.out.println();

tree.printInorder();
tree.printReversePreorder();
tree.printReversePostorder();

}

}

Node.java

public class Node {

private int element;
private Node left;
private Node right;

public Node(int ele) {
element = ele;
this.left = null;
this.right = null;
}

public int getElement() {
return element;
}

public Node getLeft() {
return left;
}

public Node getRight() {
return right;
}

public void setLeft(Node Left) {
left = Left;
}

public void setRight(Node Right) {
right = Right;
}
}

IntegerBinaryTree.java

public class IntegerBinaryTree {

private Node root = null;

public void insertNode(int value) {
if (root == null) { // empty, so make root node
root = new Node(value);
}
else {
Node pos = root;
while(pos != null) {
if (value < pos.getElement()) {
if (pos.getLeft() == null) {
pos.setLeft(new Node(value));
pos = null;
}
else {
pos = pos.getLeft();
}
}
else {
if (pos.getRight() == null) {
pos.setRight(new Node(value));
pos = null;
}
else {
pos = pos.getRight();
}
}
}
}
}

// TODO: write the method printInorder
// It should check that the tree isn't empty
// and prints "Tree is empty" if it is
// otherwise prints "Inorder: ", calls the Inorder method,
// and prints an empty line

// TODO: write the method printReversePreorder
// It should check that the tree isn't empty
// and prints "Tree is empty" if it is
// otherwise prints "ReversePreorder: ", calls the reversePreorder method,
// and prints an empty line

// TODO: write the method printReversePostorder
// It should check that the tree isn't empty
// and prints "Tree is empty" if it is
// otherwise prints "ReversePreorder: ", calls the reversePostorder method,
// and prints an empty line

// TODO: write the inorder method
// that traverses the tree and prints the data inorder

// TODO: write the method reversePreorder
// that traverses the tree and prints the data in reverse Preorder (right before left)

// TODO: write the method reversePostorder
// that traverses the tree and prints the data in reverse Postorder (right before left)

}

code after implementation

IntegerBinaryTree.java (code to copy)

``````public class IntegerBinaryTree {

private Node root = null;

public void insertNode(int value) {
if (root == null) { // empty, so make root node
root = new Node(value);
}
else {
Node pos = root;
while(pos != null) {
if (value < pos.getElement()) {
if (pos.getLeft() == null) {
pos.setLeft(new Node(value));
pos = null;
}
else {
pos = pos.getLeft();
}
}
else {
if (pos.getRight() == null) {
pos.setRight(new Node(value));
pos = null;
}
else {
pos = pos.getRight();
}
}
}
}
}
// TODO: write the method printInorder
// It should check that the tree isn't empty
// and prints "Tree is empty" if it is
// otherwise prints "Inorder: ", calls the Inorder method,
// and prints an empty line
public void printInorder(){
if(root==null){
System.out.println("Tree is empty");
}else{
System.out.print("Inorder: ");
inorder(root);
System.out.println();
}
}

// TODO: write the method printReversePreorder
// It should check that the tree isn't empty
// and prints "Tree is empty" if it is
// otherwise prints "ReversePreorder: ", calls the reversePreorder method,
// and prints an empty line
public void printReversePreorder(){
if(root==null){
System.out.println("Tree is empty");
}else{
System.out.print("ReversePreorder: ");
reversePreorder(root);
System.out.println();
}
}

// TODO: write the method printReversePostorder
// It should check that the tree isn't empty
// and prints "Tree is empty" if it is
// otherwise prints "ReversePreorder: ", calls the reversePostorder method,
// and prints an empty line
public void printReversePostorder(){
if(root==null){
System.out.println("Tree is empty");
}else{
System.out.print("ReversePreorder: ");
reversePostorder(root);
System.out.println();
}
}

// TODO: write the inorder method
// that traverses the tree and prints the data inorder
private void inorder(Node root){
if(root==null)
return;
inorder(root.getLeft());
System.out.print(root.getElement()+" -");
inorder(root.getRight());
}

// TODO: write the method reversePreorder
// that traverses the tree and prints the data in reverse Preorder (right before left)
private void reversePreorder(Node root){
if(root==null)
return;
System.out.print(root.getElement()+" -");
reversePreorder(root.getRight());
reversePreorder(root.getLeft());
}

// TODO: write the method reversePostorder
// that traverses the tree and prints the data in reverse Postorder (right before left)
private void reversePostorder(Node root){
if(root==null)
return;
reversePostorder(root.getRight());
reversePostorder(root.getLeft());
System.out.print(root.getElement()+" -");
}

}``````

IntegerBinaryTree.java code screenshot

Input/Output Screenshot after running Main.java