因此,对于AVL Tree class
,inserts
到树中有一个新元素,我有此方法。我以为我已经有了相应的代码,但是它一直想抛出NullPointerException
。当整数if
小于根数据时,它从e
条件开始。什么原因造成的任何想法?我一点也不知道。
编辑1:好,用else块更新了它。不再收到错误,但似乎没有在树中插入任何内容。感觉我可能在这里或那里错过了一步。
编辑2:好吧,我意识到了两件事。首先,我太愚蠢了,以至于没有意识到对于我的root == null
来说,我必须将根设置为带有该元素的new AVLNode
,这对我来说是愚蠢的。我还意识到,在那之后,它想无限地插入树的右侧,至少我认为是这样。
编辑3:结果是,导致无限循环的是我的rebalance()
方法。那解决了我的问题。
public void insert(int e) {
if (root == null) {
root = new AVLNode(e);
}
else if (e < root.getData()) {
root.getLeft().insert(e);
this.rebalance();
this.setHeight();
}
else if (e > root.getData()) {
root.getRight().insert(e);
this.rebalance();
this.setHeight();
}
}