使用遞歸前序遍歷二叉樹的一點問題

使用遞歸前序遍歷二叉樹的一點問題

    def preorder(self,root):  # 先序遍歷(遞歸)
        if root is None:
            return []
        result = [root.item]
        left_item = self.preorder(root.left_child)#  先遍歷完左子樹的所有左子樹
        right_item = self.preorder(root.right_child)
        return result + left_item + right_item

在遍歷完左子樹的所有左子樹後,進入 right_item = self.preorder(root.right_child) 。這個時候,已經遍歷過的節點值自動成爲了一個列表,讓我很奇怪。return語句也是在left_item和right_item語句執行完畢之後才執行的,應該沒有地方可以合併列表纔對。

如果改成

def preorder(self,root):
        if root is None:
            return []
        print= root.item #  這樣就比較直觀,可以得到一個節點的值,就打印出來,是合理的
        left_item = self.preorder(root.left_child)
        right_item = self.preorder(root.right_child)
        return result + left_item + right_item

就更容易一點

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