Ich bin eine binäre Suchbaum in Java implementieren, die Methoden rekursiv schreiben. Ich habe die Einfügemethoden gemacht, und jetzt stecke ich auf der ersten Traversalmethode, der Reihenfolge nach. Wenn ich es in meinem Testcode nach dem Hinzufügen einiger Elemente (tree.inorderTraversal) aufruft, bekomme ich eine Nullzeiger-Ausnahme bei der Methode rekursiv in Reihenfolge, und ich verstehe nicht warum. Könnte es etwas falsch mit der Einfügemethode sein?Binär Suchbaum Nullzeiger Ausnahme mit Traversal
public void insertInBinaryTree(E newItem)
{
BinaryTreeNode<E> node = new BinaryTreeNode<E>(newItem);
if (root == null) {
root = node;
} else {
insert(root, newItem);
}
}
// Recursively insert a node containing newItem into a non-empty tree. Used
// by insertInBinaryTree
private void insert(BinaryTreeNode<E> treeNode, E newItem)
{
if (newItem.compareTo(treeNode.getItem()) < 0) {
if (treeNode.getLeftChild() != null) {
insert(treeNode.getLeftChild(), newItem);
}
else {
treeNode.setLeftChild(new BinaryTreeNode<E>(newItem));
}
}
else {
if (treeNode.getRightChild() != null) {
insert(treeNode.getRightChild(), newItem);
}
else {
treeNode.setRightChild(new BinaryTreeNode<E>(newItem));
}
}
}
// If the tree is not empty, initiates an inorder traversal. This should
// print all items in ascending order. If the tree is empty, just prints
// "Tree is empty"
public void inorderTraversal()
{
System.out.println("\nInorder Traversal");
if (root == null) {
System.out.println("Tree is empty");
} else {
inorder(root);
}
}
// Recursive inorder traversal of a non-empty tree. Used by
// inorderTraversal.
private void inorder(BinaryTreeNode<E> treeNode)
{
inorder(treeNode.getLeftChild());
System.out.print(treeNode.getItem());
inorder(treeNode.getRightChild());
}
Vielen Dank! –
Sie sollten danken, indem Sie die Antwort akzeptieren: P – Ravi