diff --git a/BinaryTree.java b/BinaryTree.java index 98d9c2e..1400b2e 100644 --- a/BinaryTree.java +++ b/BinaryTree.java @@ -111,4 +111,32 @@ public class BinaryTree { } } } + + + + // Print functions from https://www.baeldung.com/java-print-binary-tree-diagram + public void print() { + StringBuilder sb = new StringBuilder(); + traversePreOrder(sb, "", "", rootNode); + System.out.println(sb.toString()); + } + + private void traversePreOrder(StringBuilder sb, String padding, String pointer, Node node) { + if (node != null) { + sb.append(padding); + sb.append(pointer); + sb.append(node.getContent()); + sb.append("\n"); + + StringBuilder paddingBuilder = new StringBuilder(padding); + paddingBuilder.append("| "); + + String paddingForBoth = paddingBuilder.toString(); + String pointerForRight = "---"; + String pointerForLeft = (node.getRightNode() != null) ? "+--" : "'--"; + + traversePreOrder(sb, paddingForBoth, pointerForLeft, node.getLeftNode()); + traversePreOrder(sb, paddingForBoth, pointerForRight, node.getRightNode()); + } + } } diff --git a/Main.java b/Main.java index 44489fe..3b71148 100644 --- a/Main.java +++ b/Main.java @@ -13,6 +13,7 @@ public class Main { binaryTree.insert(8); binaryTree.insert(16); + binaryTree.print(); System.out.println(binaryTree.search(42)); // Test values not in tree