如何实现TreeNode的非递归遍历

   2024-09-30 7780
核心提示:要实现TreeNode的非递归遍历,可以使用迭代方法和栈数据结构。这里以二叉树的前序遍历、中序遍历和后序遍历为例进行说明。首先定

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

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

class TreeNode:    def __init__(self, val=0, left=None, right=None):        self.val = val        self.left = left        self.right = right
前序遍历(根 -> 左 -> 右)
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
中序遍历(左 -> 根 -> 右)
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
后序遍历(左 -> 右 -> 根)
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]  # 反转列表得到正确的后序遍历顺序

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号