public class BinaryTree { private BinaryNode root; public BinaryTree () { root = null; } public boolean isEmpty () { if (root == null) return true; else return false; } public void insertNode (int newValue) { if (isEmpty() == true) root = new BinaryNode (newValue); else // Call the insert method of the Binary Node class. root.insert(newValue); } void insert (int newValue) { if (newValue < data) { if (left == null) left = new BinaryNode (newValue); else left.insert(newValue); } else if (newValue > data) { if (right == null) right = new BinaryNode (newValue); else right.insert(newValue); } else { System.out.println("Error: duplicate values for nodes are not " + "allowed."); System.out.println("There is already a node with a value of " + newValue); } } public void inOrderTraversal () { inOrderHelper(root); System.out.println(); } private void inOrderHelper (BinaryNode node) { if (node == null) return; inOrderHelper(node.getLeft()); System.out.print(node + " "); inOrderHelper(node.getRight()); } public void preOrderTraversal () { preOrderHelper(root); } private void preOrderHelper (BinaryNode node) { if (node == null) return; System.out.print(node + " "); preOrderHelper(node.getLeft()); preOrderHelper(node.getRight()); } public void post orderTraversal () { postorderHelper(root); } private void postOrderHelper (BinaryNode node) { if (node == null) return; postOrderHelper(node.getLeft()); postOrderHelper(node.getRight()); System.out.print(node + " "); } public void breadthFirstTraversal () { BinaryNode tempNode = root; MyQueue tempQueue; System.out.println("Breadth first traversal"); if (tempNode != null) { tempQueue = new MyQueue (); tempQueue.enqueue(tempNode); while (tempQueue.isEmpty() == false) { tempNode = (BinaryNode) tempQueue.dequeue(); System.out.print(tempNode + " "); if (tempNode.getLeft() != null) tempQueue.enqueue(tempNode.getLeft()); if (tempNode.getRight() != null) tempQueue.enqueue(tempNode.getRight()); } } System.out.println(); }