day13 代码随想录算法训练营 递归遍历

发布时间 2024-01-10 13:51:57作者: o蹲蹲o

题目:

我的感悟:

  • 用helper内部函数写更好

理解难点:

 

代码难点:

代码示例:

  • 前序
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        res = []
        def helper(root):
            if not root:return 
            res.append(root.val)
            helper(root.left)
            helper(root.right)
        helper(root)
        return res
  • 中序
  • # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution:
        def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
            res = []
            def helper(root):
                if not root:return             
                helper(root.left)
                res.append(root.val)    # 结果放在这里,中序
                helper(root.right)
            helper(root)
            return res
  • 后序
  • # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution:
        def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
            res = []
            def helper(root):
                if not root:return             
                helper(root.left)             
                helper(root.right)
                res.append(root.val)  # 结果放在后面,后序 
            helper(root)
            return res

通过截图:

扩展写法:

资料:

https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html#%E6%80%9D%E8%B7%AF