云服务器免费试用

如何实现TreeNode的非递归遍历

服务器知识 0 358

要实现TreeNode的非递归遍历,可以使用迭代方法和栈数据结构。这里以二叉树的前序遍历、中序遍历和后序遍历为例进行说明。

如何实现TreeNode的非递归遍历

首先定义一个简单的TreeNode类:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
  1. 前序遍历(根 -> 左 -> 右)
def preorder_traversal(root):
    if root is None:
        return []

    stack, result = [root], []

    while stack:
        node = stack.pop()
        result.append(node.val)

        if node.right:
            stack.append(node.right)
        if node.left:
            stack.append(node.left)

    return result
  1. 中序遍历(左 -> 根 -> 右)
def inorder_traversal(root):
    if root is None:
        return []

    stack, result = [], []
    current = root

    while current or stack:
        while current:
            stack.append(current)
            current = current.left

        current = stack.pop()
        result.append(current.val)
        current = current.right

    return result
  1. 后序遍历(左 -> 右 -> 根)
def postorder_traversal(root):
    if root is None:
        return []

    stack, result = [root], []

    while stack:
        node = stack.pop()
        result.append(node.val)

        if node.left:
            stack.append(node.left)
        if node.right:
            stack.append(node.right)

    return result[::-1]  # 反转列表得到正确的后序遍历顺序

这样就实现了二叉树的非递归遍历。注意这里的遍历顺序与递归遍历相同,只是实现方式不同。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何实现TreeNode的非递归遍历
本文地址: https://solustack.com/171194.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。