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是在第二个函数,所以就这样定义和写了。感觉会更绕一些。而且很多基础没有牢固,所以还不知道这种写法的问题。建议还是直接第一种。

主要是写法问题,单个题目就照着套就行了。

posted @ 2024-08-05 00:57  HOJEST  阅读(13)  评论(0)    收藏  举报