Advertisement
Guest User

Untitled

a guest
May 24th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.57 KB | None | 0 0
  1. // region A helper class used to print BST
  2.  
  3.     /**
  4.      * A class used to print BST.
  5.      */
  6.     protected static class BSTPrinter {
  7.         public static String getString(AvlTree tree) {
  8.             if (tree.root == null) {
  9.                 return "The tree doesn't have any nodes.";
  10.             }
  11.  
  12.             return getString(tree.root, "", true);
  13.         }
  14.  
  15.         private static String getString(Node node, String prefix, boolean isTail) {
  16.             StringBuilder builder = new StringBuilder();
  17.             String v = node.value + " (h=" + node.height + ")";
  18.  
  19.             if (node.parent != null) {
  20.                 String side = "left";
  21.                 if (node.equals(node.parent.rightChild))
  22.                     side = "right";
  23.                 builder.append(prefix + (isTail ? "└── " : "├── ") + "(" + side + ") " + v + "\n");
  24.             } else {
  25.                 builder.append(prefix + (isTail ? "└── " : "├── ") + v + "\n");
  26.             }
  27.             java.util.List<Node> children = null;
  28.             if (node.leftChild != null || node.rightChild != null) {
  29.                 children = new java.util.ArrayList<Node>(2);
  30.                 if (node.leftChild != null)
  31.                     children.add(node.leftChild);
  32.                 if (node.rightChild != null)
  33.                     children.add(node.rightChild);
  34.             }
  35.             if (children != null) {
  36.                 for (int i = 0; i < children.size() - 1; i++) {
  37.                     builder.append(getString(children.get(i), prefix + (isTail ? "    " : "│   "), false));
  38.                 }
  39.                 if (children.size() >= 1) {
  40.                     builder.append(getString(children.get(children.size() - 1), prefix + (isTail ? "    " : "│   "), true));
  41.                 }
  42.             }
  43.  
  44.             return builder.toString();
  45.         }
  46.     }
  47.  
  48.     @Override
  49.     public String toString() {
  50.         return BSTPrinter.getString(this);
  51.     }
  52.  
  53.     // endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement