gpt4 book ai didi

python - (Python) 交替二叉树的输入?

转载 作者:行者123 更新时间:2023-12-01 08:54:35 24 4
gpt4 key购买 nike

所以我刚刚开始我的学位类(class),我正在学习 Python。本周我们的作业之一是使用二叉树并添加客人,让树左右交替,然后打印左右过道客人的姓名。

我们的教授给了我们一些示例代码供我们使用,我做了一些更改,让它做我想做的事情。这是我所拥有的:

guestnumber = 0
class Node:
def __init__(self):
self.left = None
self.right = None
self.data = list()

def guestadd(root, Guest):
if Guest <= root.data[0]:
if root.left == None:
root.left = Node()
root.left.data.append(Guest)
else:
guestadd(root.left, Guest)
else:
if Guest >= root.data[0]:
if root.right == None:
root.right = Node()
root.right.data.append(Guest)
else:
guestadd(root.right, Guest)

def printlist(root):
if root == None:
return
print(root.data)
printlist(root.left)
printlist(root.right)

print("Enter guest names for seating arrangements. (Max = 50)")
guestnumber = int(input("How many guests are attending?"))
root = Node()
root.data.append("Guest")
for i in range (0,guestnumber):
guestadd (root, input("Name:"))

print("Left Aisle:")
printlist(root.left)
print("Right Aisle:")
printlist(root.right)

乍一看,一切都按预期进行,但我注意到我得到了不一致的结果,它没有均匀地分割名称。睡了一觉之后,我又做了一些排查,发现无论我以什么顺序放入数据,它总是会在左节点上放置0-9、A-G和一些特殊字符,还有H-Z、a-z、右侧还有一些特殊字符。

我已经提交了我所拥有的内容,以及我的发现的几张屏幕截图,因此我确信我会获得满分,因为这是一门入门类(class)。但令我困扰的是我无法让它始终如一地做我想做的事情。

我最好的猜测是它与字符在 ASCII 图表上的位置有关。从 0-71 的所有内容都在左侧,72-127 在右侧。我该如何让我的程序将字符串视为字符串而不是用 ASCII 来考虑它?

注意:如果我被分配这个任务来分开客人,我不会使用树。我可能会使用仅将名称添加到列表中的东西,然后使用 [::2] 和 [1::2] 切片来交替两侧。然而,由于作业是学习如何使用二叉树,所以我想遵守类(class)的限制

最佳答案

您的代码中没有任何关于左右交替的内容。您已经构建了一个以“Guest”为根的二叉搜索树。任何名字在 Unicode 词典顺序中位于“Guest”之前的人都位于左侧,而任何名字位于 Unicode 词典顺序中“Guest”之后的人都位于右侧。

关于python - (Python) 交替二叉树的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com