Python 递归式实现二叉树前序,中序,后序遍历

记忆点:

Python 递归式实现二叉树前序,中序,后序遍历_第1张图片

  • 前序:VLR
  • 中序:LVR
  • 后序:LRV

举例:

一颗二叉树如下图所示:

Python 递归式实现二叉树前序,中序,后序遍历_第2张图片

则它的前序、中序、后序遍历流程如下图所示:

Python 递归式实现二叉树前序,中序,后序遍历_第3张图片

1.前序遍历

class Solution:
    def preorderTraversal(self, root: TreeNode):
    
        def preorder(root: TreeNode):
            if not root:
                return
            res.append(root.val)
            preorder(root.left)            
            preorder(root.right)
            
        res = []
        preorder(root)
        return res

2.中序遍历

class Solution:
    def inorderTraversal(self, root: TreeNode):
        
        def inorder(root: TreeNode):
            if not root:
                return
            inorder(root.left)
            res.append(root.val)
            inorder(root.right)
        
        res = []
        inorder(root)
        return res

3.后序遍历

class Solution:
    def postorderTraversal(self, root: TreeNode):
        
        def postorder(root: TreeNode):
            if not root:
                return
            postorder(root.left)
            res.append(root.val)
            postorder(root.right)
        
        res = []
        postorder(root)
        return res

4.测试

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

# 用列表递归创建二叉树
def createTree(root,list_n,i):
    if i  
 

5.结果

Python 递归式实现二叉树前序,中序,后序遍历_第4张图片

6.补充

6.1N叉树前序遍历

"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution:
    def postorder(self, root: 'Node') -> List[int]:
        def seq(root):
            if not root:
                return
            res.append(root.val)
            for child in root.children:
                seq(child)            
        res = []
        seq(root)
        return res

N叉树后序遍历
"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution:
    def postorder(self, root: 'Node') -> List[int]:
        def seq(root):
            if not root:
                return
            for child in root.children:
                seq(child)
            res.append(root.val)
        res = []
        seq(root)
        return res

到此这篇关于Python 递归式实现二叉树前序,中序,后序遍历的文章就介绍到这了,更多相关二叉树前序,中序,后序遍历内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Python 递归式实现二叉树前序,中序,后序遍历)