我设法建立了一个二叉树,并且可以在插入节点时打印其内容。但是,当我使用一种遍历树的方法时,我可以创建一个遍历,从而生成多个单个arrayList,但是当我尝试用遍历填充单个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]
但是当我尝试将其整理时,它会得到nullptrs。
@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()行,但是据我了解,我应该将同一实例传递给第一个参数。 预先谢谢你。
答案 0 :(得分:0)
修复了错误。将this.isEmpty()更改为searchTree.isEmpty(),检查正在处理的searchTree。以前是检查“ this”,它是一个nullPtr。仍然是越野车,但至少它正在产生某些东西。坚持太久了。
谢谢