将堆作为带键的数组,如何打印所有键?到目前为止,我得到了
def heapPrint (arr,i):
if (len(arr) == 0 or len(arr) == 1):
return
if (left(i) > len(arr) or right(i) > len(arr)):
return
if (left(i) < len(arr) and right(i) < len(arr):
print (arr[left(i)],arr[right(i)])
heapPrint (arr,left(i))
heapPrint (arr,right(i))
有没有更好的解决方案,我只能打印1个节点而不是2个节点?感谢
答案 0 :(得分:0)
我认为你正在寻找类似的东西:
def heapPrint(arr, i)
# if the index is larger than the heap length
if i >= len(arr):
return;
# if it's a leaf node, then return
if left(i) >= len(arr) and right(i) >= len(arr):
return
if left(i) < len(arr):
print(arr[left(i)], end=' ')
if right(i) < len(arr):
print(arr[right(i)], end='')
print('')
# these calls will return immediately if the
# index is too large.
heapPrint(arr, left(i))
heapPrint(arr, right(i))
我的python技能很少,因此可能存在一些语法错误,但这是基本的想法。