package timingBase; /** * @author levenick Apr 3, 2017 10:51:00 AM */ class BinaryTree { int root; BST right; BST left; boolean isEmpty() { return right == null; } public String toString() { return toString(""); } String LAMBDA = "λ"; String toString(String indent) { String returnMe = "\n" + indent; if (isEmpty()) { return returnMe + LAMBDA; } returnMe += root + "\n"; returnMe += right.toString(indent + " "); returnMe += left.toString(indent + " "); return returnMe; } /** * @return the root */ public int getRoot() { return root; } /** * @param root the root to set */ public void setRoot(int root) { this.root = root; } /** * @return the right */ public BST getRight() { return right; } /** * @param right the right to set */ public void setRight(BST right) { this.right = right; } /** * @return the left */ public BST getLeft() { return left; } /** * @param left the left to set */ public void setLeft(BST left) { this.left = left; } static final boolean DEBUG = false; int traverse(int[] list, int last) { if (DEBUG) { System.out.println("n=" + list.length); } if (!isEmpty()) { if (DEBUG) { System.out.println("Incoming... last=" + last + " n=" + list.length); System.out.println("this = " + this); } last = left.traverse(list, last); display(list, last, left, "left"); list[++last] = root; last = right.traverse(list, last); display(list, last, right, "right"); if (DEBUG) { System.out.println("outgoing... last=" + last + " n=" + list.length); } } return last; } void brokenTraverse(int[] list, int last) { if (!isEmpty()) { left.traverse(list, last); last++; list[last] = root; right.traverse(list, last); } } private void display(int[] list, int last, BST t, String s) { if (DEBUG) { System.out.println("I done traversed the " + s + " and now the list is:"); for (int i = 0; i <= last; i++) { System.out.println("\tlist[" + i + "] = " + list[i]); } } } }