Python數據結構實戰——數(Tree)

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()    #先建立樹,再打印樹

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章