今天開始二叉樹,發現第一關就有些疑問。
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是在第二個函式,所以就這樣定義和寫了。感覺會更繞一些。而且很多基礎沒有牢固,所以還不知道這種寫法的問題。建議還是直接第一種。
主要是寫法問題,單個題目就照著套就行了。