Я пытаюсь реализовать код для BinarySearchTree в Java, и в процессе я пытаюсь написать метод, который будет печатать состояние двоичного дерева, на самом деле просто для проверки того, что тесты, которые я выполняюв моем коде проходят нормально. Я бы хотел, чтобы этот метод печатал дерево следующим образом:
rightRightRightChild
rightRightChild
rightRightLeftChild
rightChild
rightLeftRightChild
rightLeftChild
rightLeftLeftChild
root
leftRightRightChild
leftRightChild
leftRightLeftChild
leftChild
leftLeftRightChild
leftLeftChild
leftLeftLeftChild
... и так далее, когда я добавляю больше узлов или удаляю их и т. Д. Вот рекурсия, которую я написал в надеждедобиться этого:
public void print(){
System.out.println(print(root, 2));
}
private String print(Node<T> root, int i){
String result = "";
String strRoot = root.data.toString();
if (root.right != null){
String strRight = "";
for (int j = 0; j < i; j++)
strRight = strRight + "\t\t";
strRight = strRight + print(root.right, i+2);
result += strRight;
}
result += "\n"+strRoot;
if (root.left != null){
String strLeft = "";
for (int j = 0; j < i; j++)
strLeft = strLeft + "\t\t";
strLeft = strLeft + print(root.left, i+2);
result += strLeft;
}
return result;
}
Идея состоит в том, чтобы использовать рекурсию для создания довольно длинной строки, используя символы "\ n" и "" (или "\ t"), чтобы визуально представить дерево какдобавьте и удалите узлы, потому что мне легче увидеть, что происходит, когда я тестирую свою реализацию.
Вот как выглядит мой основной метод прямо сейчас:
public static void main(String[] args){
/**
*Testing add, contains and delete methods
*/
BinarySearchTree<Integer> bst = new BinarySearchTree();
bst.add(6);
bst.print();
System.out.println("-----------------");
bst.add(3);
bst.print();
System.out.println("-----------------");
bst.add(9);
bst.print();
System.out.println("-----------------");
System.out.println("\nDoes this tree contain 6? " + (bst.contains(6)!=null));
System.out.println("\nDoes this tree contain 11? " + (bst.contains(11)!=null));
bst.add(8);
bst.add(7);
bst.delete(9);
bst.print();
System.out.println("-----------------");
ИтакЯ добавил некоторые вещи и удалил другую на своем BST, затем распечатал, и вот что я получаю:
Lucianos-MacBook-Pro:loucode luciano$ java BinarySearchTree
6
-----------------
6
3
-----------------
9
6
3
-----------------
Does this tree contain 6? true
Does this tree contain 11? false
87
8
7
6
3
-----------------
Я попытался заменить "\ t" на простой простой "",но это тоже не сработало. Я немного сбит с толку и не могу понять, что происходит. Отступ не происходит.