144.二叉树的前序遍历145.二叉树的后序遍历 94.二叉树的中序遍历
今天开始二叉树,发现第一关就有些疑问。
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是在第二个函数,所以就这样定义和写了。感觉会更绕一些。而且很多基础没有牢固,所以还不知道这种写法的问题。建议还是直接第一种。
主要是写法问题,单个题目就照着套就行了。
浙公网安备 33010602011771号