簡體   English   中英

有人可以解釋一下這條線嗎

[英]can someone explain me this line

class TreeNode:
    def __init__(self, data):
        self.data = data
        self.children = []
        self.parent = None

    def get_level(self):
        level = 0
        p = self.parent
        while p:
            level += 1
            p = p.parent

        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.children.append(child)

def build_product_tree():
    root = TreeNode("Electronics")

    laptop = TreeNode("Laptop")
    laptop.add_child(TreeNode("Mac"))
    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()

if __name__ == '__main__':
    build_product_tree()

我知道 self.parent 的含義,但有人請解釋一下: p = p.parentchild.parent = self

想象一下,你有一大堆桶。 最小的紅色,大一點的橙色,大一點的黃色,彩虹的所有顏色。

你把紅色放在橙色里面,然后你把橙色放在黃色里面,以此類推。 您的所有存儲桶現在都在其他存儲桶中。 除了紫羅蘭。 那是最大的桶。

現在你從紅色桶開始。 我們稱它為self 我們想要一個算法來計算有多少桶。 讓我們創建一個名為level的計數器變量。

紅色桶的父節點是橙色桶,我們可以使用p = self.parent獲得。 現在p指的是橙色桶。 我們還想給我們的計數器加 1。 所以我們做level += 1

現在p是橙色桶。 但我們還沒有完成。 我們需要找出橙色桶是否也有父桶。 我們將詢問其父級,並通過說p = p.parent重用相同的變量p 在我們這樣做之后, p變成了黃色桶。 我們再次向關卡添加一個。

我們一直這樣走,直到我們到達紫羅蘭色桶。 紫水桶是最外層的水桶。 所以當我們向紫羅蘭桶詢問它的父母時,我們不會得到答案。 換句話說,當p是紫色桶時,我們做p = p.parentp不再是桶!

好吧,只要p仍然是一個桶,我們就只是在循環。 在代碼中,這就是說while p:的位。 所以現在我們停止循環,我們的level變量告訴我們有多少桶。

child.parent = self告訴存儲桶 go 的位置。 讓我們來一個更大的桶。 一個黑色的桶。 我們稱它為self 我們還會得到紫羅蘭色桶。 我們會叫那個child 現在,我要告訴紫水桶到go進黑水桶。 child.parent = self

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM