在二叉树中证明最小堆时出现空指针异常

时间:2016-09-04 12:54:21

标签: java arrays nullpointerexception binary-tree min-heap

这段代码是为了找出二进制树是否为min heap,我在public static boolean isMinHeap的第3 if语句中得到readUTF(),我不确定为什么我一直得到这个异常因为我认为由于上述中断,代码才有效。

NullPointerException

1 个答案:

答案 0 :(得分:0)

您不会检查array中的元素是否不是null。您只需检查array[i] != null && array [(i-1)/ 2] == null中的以下ArrayHeapChecker#isBinaryTree。在将Integernull进行比较时,这不会保护您免受NPE的侵害。例如。您的代码将因以下输入而失败:new Integer[]{1, 2, 3, 4, 5, 6, null}。我不建议您修复,因为这取决于您的要求,但您的检查不够严格。

更准确地说,就像现在一样,只要array具有奇数长度,最后一个元素为nulllenght == 1除外{/ 1}},您的代码就会失败。