1.實驗目標
構建一顆如下圖所示的樹:
2.定義樹類
class TreeNode:
def __init__(self, data):
self.data = data #樹的值
self.children = [] #樹的孩子結點
self.parent = None #樹的父結點
def get_level(self): #劃分層級
level = 0
p = self.parent #p爲父結點
while p: #如果父結點存在
level += 1
p = p.parent #p移向父結點
return level #返回當前層級
def print_tree(self):
spaces = ' '*self.get_level()*3 #根據層級打印空格
prefix = spaces + "|__" if self.parent else "" #如果沒有父結點則不需要打印
print(prefix + self.data)
if self.children:
for child in self.children: #遞歸
child.print_tree()
def add_child(self, child):
child.parent = self #要添加的父結點是self
self.children.append(child) #父結點self的children添加child
3.構建樹並打印
def build_product_tree():
root = TreeNode("Electronics") #實例化root
laptop = TreeNode("Laptop")
laptop.add_child(TreeNode("Mac")) #父結點是laptop
laptop.add_child(TreeNode("Surface"))
laptop.add_child(TreeNode("Thinkpad"))
cellphone = TreeNode("Cell Phone")
cellphone.add_child(TreeNode("iphone"))
cellphone.add_child(TreeNode("Google Pixel"))
cellphone.add_child(TreeNode("vivo"))
tv = TreeNode("TV")
tv.add_child(TreeNode("Samsung"))
tv.add_child(TreeNode("LG"))
root.add_child(laptop)
root.add_child(cellphone)
root.add_child(tv)
root.print_tree() #打印樹
4.顯示結果
build_product_tree() #先建立樹,再打印樹