我已经查看了很多关于这个陈旧问题的问题,但我找不到答案来解释为什么我在检查 null 时会得到 NPE。我自己和另一个伙伴正在构建一个自平衡二分搜索,只需使用旋转,因此如果新根有一个需要放置在另一侧的子节点,我们需要存储一个临时节点。
在这里,我们检查 nextRoots 左或右孩子是否为空,如果不是,我们将其存储在临时节点中以供将来放置。
Node temp = null;
nextRoot = root.rightChild; // Set the next root
oldRoot = root; // Hold the old root
// If next roots left child is NOT null
// Lets store it and null it now
if (nextRoot.leftChild != null) // This check throws NPE, not nextRoot, just the nextRoot.leftChild
{
temp = nextRoot.leftChild;
nextRoot.leftChild = null;
}
我的印象是 if 检查应该是规避这个问题的方法,但它本身就是导致问题的原因。任何帮助将不胜感激,如果您需要更多代码,请告诉我。