python创建树状图
想法:如何去记住每个页面的元素,如何实现不同页面的导航,如何从主页面遍历每一个页面的每一个元素
1.创建数据结构存储
2.树状图正好是我们想要的结构体
class TreeNode:
def __init__(self, data):
self.data = data
self.children = []
def add_child(self, child):
self.children.append(child)
def remove_child(self, child):
"""移除一个子节点"""
self.children.remove(child)
def is_leaf(self):
"""判断该节点是否是叶子节点(没有子节点)"""
return len(self.children) == 0
def find(self, target):
if self.data == target:
return self
for child in self.children:
result = child.find(target)
if result:
return result
return None
def __repr__(self):
return f"TreeNode({self.data})"
# 创建树状结构
if __name__ == "__main__":
# 创建根节点
root = TreeNode('home')
# 创建子节点
root_child1 = TreeNode('设置')
root_child2 = TreeNode('空调')
root_child3 = TreeNode('多媒体')
root_child4 = TreeNode('qnx')
# 将子节点添加到根节点
root.add_child(root_child1)
root.add_child(root_child2)
root.add_child(root_child3)
root.add_child(root_child4)
# 创建子节点的子节点
root_child1_child1 = TreeNode('wifi')
root_child1_child2 = TreeNode('蓝牙')
root_child1_child3 = TreeNode('电源')
root_child1_child4 = TreeNode('显示')
root_child1_child5 = TreeNode('声音')
root_child1_child6 = TreeNode('网络')
root_child1_child7 = TreeNode('安全')
root_child1_child8 = TreeNode('关于')
root_child1.add_child(root_child1_child1)
root_child1.add_child(root_child1_child2)
root_child1.add_child(root_child1_child3)
root_child1.add_child(root_child1_child4)
root_child1.add_child(root_child1_child5)
root_child1.add_child(root_child1_child6)
root_child1.add_child(root_child1_child7)
# 打印树状结构
def print_tree(node, level=0):
print(' ' * level + repr(node))
for child in node.children:
print_tree(child, level + 1)
print_tree(root)
结果打印:
后面继续更新,如何实现