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))