AVL 树再平衡
AVL TREE REBALNCE
在第 7 行我得到空指针异常,我该如何解决?有什么想法吗?
private void updateHeights(BSTreeNode v) {
BSTreeNode u = v;
while (u != null) {
int bfc=updateNodeHeight(u);
u = u.parent;
if (bfc<=-2) {
if( getHeight(u.left.left) >= getHeight(u.left.right) ) { // Null Pointer Exception
u = rotateRight(u);
} else {
u=LR(u);
}
}
}
}
有两种可能的问题,以及同样多的解决方案。首先是在 getHeight()
中放置一个空检查,我认为这是根据您的编程风格完成的(有条件的检查)。这留下了 u.left 可能的空指针问题。因此:
确保u.left不为空,像这样:
getHeight(u.left != null && ((u.left.left)>=getHeight(u.left.right))
在第 7 行我得到空指针异常,我该如何解决?有什么想法吗?
private void updateHeights(BSTreeNode v) {
BSTreeNode u = v;
while (u != null) {
int bfc=updateNodeHeight(u);
u = u.parent;
if (bfc<=-2) {
if( getHeight(u.left.left) >= getHeight(u.left.right) ) { // Null Pointer Exception
u = rotateRight(u);
} else {
u=LR(u);
}
}
}
}
有两种可能的问题,以及同样多的解决方案。首先是在 getHeight()
中放置一个空检查,我认为这是根据您的编程风格完成的(有条件的检查)。这留下了 u.left 可能的空指针问题。因此:
确保u.left不为空,像这样:
getHeight(u.left != null && ((u.left.left)>=getHeight(u.left.right))