当我在定义方法heapify down(将非最小元素从根到叶的移位)的while循环中遇到错误时,我正在最小堆(在根节点上具有最小元素的数字树)上进行练习。此方法涉及一个辅助方法self.child_present,该方法检查每个节点是否存在子节点。
self.child_present(idx)返回一个值为True或False的布尔值,因此我最初认为必须使用相等运算符==将其与另一个布尔值进行比较,以使while循环运行。但是,这返回了一个错误,而self.child_present本身被认为是有效的语句/为什么? (idx是树中元素的索引,而self.count是树中元素的总数)
def child_present(self, idx):
return self.left_child_idx(idx) <= self.count #Result is a Boolean
(1)
def heapify_down(self):
idx = 1
while self.child_present(idx) == True:
....
...
print("Heap Restored! self.heap_list")
(2)
def heapify_down(self):
idx = 1
while self.child_present(idx):
...
...
print("Heap Restored! self.heap_list")
(1)返回错误,而(2)提供预期结果。这是类方法特有的吗,即while循环由于条件语句是类方法而返回错误?