没有合适的资源?快使用搜索试试~ 我知道了~
Python3实现二叉树的遍历算法(源代码)
需积分: 1 0 下载量 193 浏览量
2024-04-30
14:43:06
上传
评论
收藏 74KB PDF 举报
温馨提示
试读
2页
本文介绍了如何在Python3中实现二叉树的前序、中序和后序遍历算法。首先定义了一个二叉树节点类TreeNode,然后分别实现了三种遍历算法的函数。前序遍历(根-左-右)和中序遍历(左-根-右)使用了栈来辅助遍历过程,通过迭代的方式模拟了递归遍历的行为。而后序遍历(左-右-根)由于栈的特性不能直接模拟其顺序,因此采用了递归的方式来实现。文中还提供了一个示例二叉树来展示如何使用这些遍历函数,并给出了遍历结果的输出。这些遍历算法是二叉树操作中常用的基础算法,对于理解二叉树的结构和特性具有重要意义。
资源推荐
资源详情
资源评论
首先,我们需要定义一个二叉树节点类(TreeNode):
然后,我们可以实现前序、中序和后序遍历的算法:
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
# 前序遍历(根-左-右)
def preorderTraversal(root):
if root is None: # 如果根节点为空,则返回空列表
return []
result = []
stack = [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 inorderTraversal(root):
if root is None: # 如果根节点为空,则返回空列表
return []
result = []
stack = [] # 使用栈来辅助遍历
curr = root # 当前节点指针
while curr or stack:
while curr: # 一直遍历到最左子节点
stack.append(curr)
curr = curr.left
curr = stack.pop() # 弹出栈顶元素(最左子节点)
result.append(curr.val) # 访问节点值
curr = curr.right # 遍历右子树
return result
# 后序遍历(左-右-根)
# 注意:后序遍历直接使用递归会更简单,因为栈不能直接模拟后序遍历的“左-右-根”顺序
def postorderTraversal(root):
if root is None: # 如果根节点为空,则返回空列表
return []
result = []
# 使用递归实现后序遍历
资源评论
孤蓬&听雨
- 粉丝: 8209
- 资源: 358
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功