遍历二叉树的空指针

时间:2018-12-24 03:49:21

标签: java nullpointerexception binary-tree

我设法建立了一个二叉树,并且可以在插入节点时打印其内容。但是,当我使用一种遍历树的方法时,我可以创建一个遍历,从而生成多个单个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()行,但是据我了解,我应该将同一实例传递给第一个参数。 预先谢谢你。

1 个答案:

答案 0 :(得分:0)

修复了错误。将this.isEmpty()更改为searchTree.isEmpty(),检查正在处理的searchTree。以前是检查“ this”,它是一个nullPtr。仍然是越野车,但至少它正在产生某些东西。坚持太久了。

谢谢