Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 从二进制堆中删除叶的时间复杂性_Algorithm_Data Structures_Time Complexity_Binary Heap - Fatal编程技术网

Algorithm 从二进制堆中删除叶的时间复杂性

Algorithm 从二进制堆中删除叶的时间复杂性,algorithm,data-structures,time-complexity,binary-heap,Algorithm,Data Structures,Time Complexity,Binary Heap,从堆中删除叶节点的时间复杂度是多少 我认为,如果您不知道节点在哪里,那么应该是logn,因为您必须找到它 但是如果你已经知道节点在哪里,它应该是O(1),对吗?因为您可以删除它,而不必重新堆所有内容?请记住,二进制堆必须是完整的二叉树,因此,如果您删除的不是最后一片叶子,那么您需要移动一些东西来代替它。一种方法是将其与最后一个叶交换,删除最后一个叶,然后执行冒泡步骤以确保heap属性仍然有效。除了实际定位要删除的叶节点外,这还需要时间O(logn) 希望这有帮助 谢谢你忘记了完整的二叉树部分。

从堆中删除叶节点的时间复杂度是多少

我认为,如果您不知道节点在哪里,那么应该是logn,因为您必须找到它


但是如果你已经知道节点在哪里,它应该是O(1),对吗?因为您可以删除它,而不必重新堆所有内容?

请记住,二进制堆必须是完整的二叉树,因此,如果您删除的不是最后一片叶子,那么您需要移动一些东西来代替它。一种方法是将其与最后一个叶交换,删除最后一个叶,然后执行冒泡步骤以确保heap属性仍然有效。除了实际定位要删除的叶节点外,这还需要时间O(logn)


希望这有帮助

谢谢你忘记了完整的二叉树部分。