2014-10-20 4 views
0

У меня есть метод вставки двоичного поиска, который работает. Я пытаюсь добавить метод triNodeRestructuring, который балансирует его, если он не сбалансирован по высоте. В моем методе вставки, после того, как я вставляю элемент, в конце метода вставки, у меня есть оператор if, который проверяет, сбалансирован ли он по высоте. Если это так, он печатает «Height Balanced». Кроме того, он печатает «Не сбалансированный по высоте», а затем вызов метода triNodeRestructure для элемента, который я только что вставил. Когда я запускаю свой код, он дает мне исключение нулевого указателя при моем вызове triNodeRestructure (item). Он прослеживает его обратно к моему методу triNodeRestructure к линии, которая говорит:AVL Tree Insert NullPointerExeption?

AVLNode<E> z = x.getParent().getParent(); 

У меня есть Присваиватель SetParent и поглотитель для GetParent. Это единственные родительские методы, которые у меня есть.

Я вставил 50, 49, 48 в этом порядке. Поэтому, основываясь на этом, z должно быть 50, так как x - последний узел, который я вставил, который равен 48. Почему я получаю исключение с нулевым указателем? Z не является нулевым, поэтому этого не должно происходить. Любая помощь будет оценена по достоинству.

ответ

0

Я понял, что случилось, сразу после размещения этого вопроса. Я забыл написать строку setParent() в моем методе insert, который никогда не устанавливал родительский элемент для вставленного узла. Дурак я.