>我已经设法设置了一个二叉树,并且可以在插入节点时打印内容。但是,当我使用一种方法遍历树时,我可以创建一个遍历,生成多个单个 arrayLists,但是当我尝试使用遍历填充单个 arrayList 时,我得到一个 NullPointerException,我不确定为什么。
有效的原件。
@Override
public List<T> traverse() {
List<T> traversal = new ArrayList<T>();
populateTraversalList(this,traversal);
if (this.isEmpty()) {
return null;
} else {
traversal.add(this.getValue());
root.getLeft().traverse();
root.getRight().traverse();
}
System.out.println(traversal.toString());
return traversal;
}
生成输出。当给定一个由 {0, 1, 2, 4, 3, 5, 6, 7} 数组生成的整数二叉树时。
[3]
[7]
[6]
[5]
[4]
[2]
[1]
[0]
但是当我试图把它整理起来时,它会得到空。
@Override
public List<T> traverse() {
List<T> traversal = new ArrayList<T>();
populateTraversalList(this,traversal);
System.out.println(traversal.toString());
return traversal;
}
private void populateTraversalList(BinaryTree<T> searchTree, List<T> traversalList) {
if (this.isEmpty()) {
return;
} else {
traversalList.add(getValue());
populateTraversalList((BinaryTree<T>) searchTree.getLeft(), traversalList);
populateTraversalList((BinaryTree<T>) searchTree.getRight(), traversalList);
}
}
它似乎特别反对 searchTree.getLeft() 行,但根据我的理解,我应该将相同的实例传递到第一个参数中。提前谢谢你。
修复了错误。将 this.isEmpty() 更改为 searchTree.isEmpty(),检查正在处理的 searchTree。以前是检查"this",这是一个空Ptr。仍然有问题,但至少它正在生产一些东西。坚持太久了。
谢谢