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
Get Answers For Free
Most questions answered within 1 hours.