144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷

HOJEST發表於2024-08-05

今天開始二叉樹,發現第一關就有些疑問。

1.如果result定義在外面,會出現空陣列,輸出321之類的數字,明明沒有東西,為什麼會有這種輸出呢?應該要直接return才對。。。暫時不知道,還沒有糾結這個

2.所以result必須在裡面。那遞迴函式也必須要寫在裡面了。那就涉及到兩種寫法,一是直接寫道solution函式,函式里面也可以寫函式;二就是定義為類的子函式,包括輸出也可以這樣:

第一種寫法:

class Solution:
    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        result = []
        def ifs(root):
            if root is None:
                return
            ifs(root.left)
            result.append(root.val)
            ifs(root.right)
        ifs(root)
        return result

  

第二種寫法:

class Solution:

    def ifs(self, root):
        if root is None:
            return
        self.ifs(root.left)
        self.result.append(root.val)
        self.ifs(root.right)
    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        self.result = []
        self.ifs(root)
        return self.result

  第二種寫法還不能把result放外面,不帶self。因為這兩個函式訪問的變數都必須要result了,所以只定義在一個裡面肯定不行,定義在外面,即使加上self,都會認為未定義。而且因為最後return是在第二個函式,所以就這樣定義和寫了。感覺會更繞一些。而且很多基礎沒有牢固,所以還不知道這種寫法的問題。建議還是直接第一種。

主要是寫法問題,單個題目就照著套就行了。

相關文章