【问题标题】:AVL TREE REBALNCE [duplicate]AVL 树再平衡 [重复]
【发布时间】:2016-03-29 13:42:08
【问题描述】:

在第 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);
      }
    }
  }
}   

【问题讨论】:

  • u.left.left 对象可能为 null...检查 !=null 条件和 sysout 并查看

标签: java tree height implementation


【解决方案1】:

有两个可能的问题,以及同样多的解决方案。首先是在getHeight() 中放置一个空检查,我假设这是根据您的编程风格完成的(有条件的检查)。这给 u.left 留下了一个可能的空指针问题。因此:

确保 u.left 不为空,如下所示:

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

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 有两个可能的问题,以及解决它们的方法。首先是在getHeight() 中放置一个空检查,我假设已根据有条件的检查完成。这给u.left 留下了一个可能的空指针问题。因此,我将其发布为答案。
  • 我对您的回答没有异议,只是一般需要详细说明。这就是我的标志处于“审查”模式的原因。我建议您更好地解释“为什么”您的答案可能是解决方案,以使其成为完美的解决方案。 ;-)
  • 感谢您的反馈,我已经更新了我的答案!圣诞快乐:)
  • 现在好了!祝你圣诞快乐
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
相关资源
最近更新 更多