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