📜  数据结构|树遍历|问题6(1)

📅  最后修改于: 2023-12-03 15:10:20.241000             🧑  作者: Mango

树的遍历问题

在计算机科学中,树是一种重要的数据结构,它是由n个节点组成的有层次关系的集合。树的遍历是指按照某种顺序依次访问树中所有节点的过程。常见的树的遍历方式有前序遍历、中序遍历和后序遍历。

前序遍历

前序遍历是指先访问根节点,然后访问左子树,最后访问右子树。前序遍历的遍历顺序可以用以下代码实现:

def preorderTraversal(root: TreeNode) -> List[int]:
    if not root:
        return []
    res = [root.val]
    res += preorderTraversal(root.left)
    res += preorderTraversal(root.right)
    return res
中序遍历

中序遍历是指先访问左子树,然后访问根节点,最后访问右子树。中序遍历的遍历顺序可以用以下代码实现:

def inorderTraversal(root: TreeNode) -> List[int]:
    if not root:
        return []
    res = inorderTraversal(root.left)
    res += [root.val]
    res += inorderTraversal(root.right)
    return res
后序遍历

后序遍历是指先访问左子树,然后访问右子树,最后访问根节点。后序遍历的遍历顺序可以用以下代码实现:

def postorderTraversal(root: TreeNode) -> List[int]:
    if not root:
        return []
    res = postorderTraversal(root.left)
    res += postorderTraversal(root.right)
    res += [root.val]
    return res

以上三种遍历方式都是基于递归实现的,当然也可以使用栈来实现迭代遍历。此外,还有一种常见的树的遍历方式是层次遍历,它需要用到队列实现。