我有一个列表,代表下面的堆显示。
L = [8,4,7,2,3,1]
我需要编写一个函数,要求用户输入父级的位置,然后该函数将打印父级,左子级和右级子级的值,如果父级没有子级,则打印为false。
我尝试了以下代码,但是我得到了一个错误。
position = int(input("Enter the position: "))
L = [8,7,2,3,1]
print("Parent:",heapList[position])
def children(L, position):
for i in L:
if L[2*i+1] not in L:
return False
else:
print("Left Child",L[2*i+1])
children(L, position)
当用户输入0作为位置输入时,输出的示例应如下所示:
Parent: 8
Left child: 4
Right child: 7
答案 0 :(得分:0)
您可以通过对真值语句使用这些函数来避免循环。
def has_childern(self):
return self.right_child or self.left_child
def has_both_childern(self):
return self.right_child and self.left_child
然后只使用嵌套的if作为示例。
if current_node.has_both_childern():
...
elif current_node.has_left_child():
...
答案 1 :(得分:0)
代码应如下所示:
L_heap = [8,4,7,2,3,1]
def children(L, position):
if position > len(L) - 1 :
print("There is no node at this heap position", position)
return
else:
print("Parent", L[position]
if (2*position+1) > len(L)-1:
print("No childs")
return
else:
print("Left Child",L[2*position+1])
if not((2*position+2) > len(L)-1):
print("Right Child",L[2*position +2])
return
children(L_heap, 0)
children(L_heap, 5)
children(L_heap, 3)
children(L_heap, 8)
输出:
Parent 8
Left Child 4
Right Child 7
Parent 1
No childs
Parent 2
No childs
There is no node at this heap position 8