我试图根据给定的元素列表构建一棵树,其中每个元素构成一个完整的层次。element0是根,然后element1是第一级,依此类推
这是我的代码:
example: for a given list ["fever", "headache", "fatigue"] my tree would be:
fever
# Yes / \ No
# headache headache
# Yes / \ No Yes/ \No
# fatigue fatigue fatigue fatigue
class Node:
def __init__(self, data, positive_child = None, negative_child = None):
self.data = data
self.positive_child = positive_child
self.negative_child = negative_child
def __str__(self):
return str(self.data)
def tree_helper(symptoms,tree_nodes):
if len(symptoms) == 0:
return
if len(symptoms) == 1:
symptoms[0] = Node(symptoms[0])
tree_nodes.append(symptoms[0])
print('OK')
else:
yes_root = Node(symptoms[0],symptoms[1],symptoms[1])
tree_nodes.append((yes_root))
tree_helper(symptoms[1:],tree_nodes)
no_root = Node(symptoms[0],symptoms[1],symptoms[1])
tree_nodes.append(no_root)
tree_helper(symptoms[1:],tree_nodes)
return tree_nodes
def build_tree(symptoms):
tree_nodes = []
if len(symptoms) > 1:
tree_nodes = tree_helper(symptoms,tree_nodes)
for i in tree_nodes:
print(i.data, i.positive_child,i.negative_child)
if __name__ == "__main__":
build_tree(["fever","headache","fatigue"])
它似乎只创建最左侧路径和最右侧路径的节点,并将它们添加两次
您可以构建节点,然后添加连接
相关问题 更多 >
编程相关推荐