Привет У меня возникли проблемы при вставке справа от узла в двоичном дереве ... Я просто не понимаю, почему происходит исключение. Это метод для вставки:
public void attachRight(BinaryTree<T> tree) {
if (right != null) {
throw new TreeViolationException();
}
if (tree != null) {
tree.parent = this;
right = tree;
}
}
Это код моего основного класса
тестирование в открытом классе {
public static void main(String[] args) {
/* the tree to be built 30
* / \
* 12 16
* / \ / \
* null 1 2 5
*/
//Create binary tree and set root to 30
BinaryTree<Integer> root = new BinaryTree<Integer>();
root.makeRoot(30);
//System.out.println(root.getData()); //for verifying only
//Insert 12 -> left(30)
root.attachLeft(new BinaryTree<Integer>());
root.left.setData(12);
//Insert 16 -> right(30)
root.attachRight(new BinaryTree<Integer>());
root.right.setData(16);
//insert 1 -> right(12)
root.right.attachRight(new BinaryTree<Integer>());
root.right.right.setData(1);
//insert 2 -> left(16)
root.right.attachLeft(new BinaryTree<Integer>());
root.right.left.setData(2);
//insert 5 -> right(16)
root.right.attachRight(new BinaryTree<Integer>());
root.right.right.setData(5);
System.out.println(root.getData());
System.out.println(root.left.getData());
System.out.println(root.right.getData());
}
}
Я могу вставить только 30, 12 и 16. Не уверен, что происходит ....
Это ошибка, которую я получаю, это происходит в методе attachRight
Исключение в потоке "main" proj5.TreeViolationException
в proj5.BinaryTree.attachRight (BinaryTree.java:98)
TreeViolationException - это просто мой класс, который расширяет RuntimeException