二叉树的遍历-Python

本文详细介绍了四种常见的二叉树遍历方法:前序遍历(根-左-右),中序遍历(左-根-右),后序遍历(左-右-根)以及层序遍历,并提供了相应的Python实现。通过示例展示了不同遍历方式下的结果,帮助读者深入理解二叉树遍历的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前序遍历

根-左-右

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

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

中序遍历

左-根-右

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

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

后序遍历

左-右-根

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

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

层序遍历

二叉树
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]

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

class Solution:
    def levelOrder(self , root: TreeNode) -> List[List[int]]:
        res = []
        if not root:
            return res
        queue = []
        queue.append(root)
        while queue:
            tmp = []
            for _ in range(len(queue)):
                node = queue.pop(0)
                tmp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            res.append(tmp)
        return res

之形遍历

二叉树
该二叉树之形遍历的结果是
[
[3],
[20,9],
[15,7]
]

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

class Solution:
    def Print(self , pRoot: TreeNode) -> List[List[int]]:
        res = []
        if not pRoot:
            return res
        queue = []
        queue.append(pRoot)
        k = 0
        while queue:
            tmp = []
            for _ in range(len(queue)):
                node = queue.pop(0)
                tmp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            if k % 2:
                tmp[:] = tmp[::-1]
            res.append(tmp)
            k += 1
        return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值