java - AVL 树重新平衡

标签 java tree height implementation

在第 7 行中,我得到 nullpointerException,我该如何解决这个问题?有什么想法吗?

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 不为 null,如下所示:

getHeight(u.left != null && ((u.left.left)>=getHeight(u.left.right))

关于java - AVL 树重新平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34430298/

相关文章:

c - 修改二叉树

algorithm - 给定一组区间 S。你必须以最小时间复杂度找到 S 中包含在给定区间 (a, b) 中的所有区间

html - 动态高度div

java - 带有 Crystal Reports 插件的 Eclipse 中的 JSP 支持

Java Generics - 可比较的接口(interface)

java - 阿克曼函数

html - 将 img 集中在 div 元素中,div 的高度为 100%

java - 当服务器返回错误时,使用 Immutables 进行改造会引发运行时异常

javascript - 有向无环层次图实现

具有动态高度的 CSS 和 DIV