千家信息网

怎样返回的python中序遍历

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这期内容当中小编将会给大家带来有关怎样返回的python中序遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。【题目】给定一个二叉树,返回它的中序 遍历。示例:输入
千家信息网最后更新 2025年12月03日怎样返回的python中序遍历

这期内容当中小编将会给大家带来有关怎样返回的python中序遍历,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

【题目】

给定一个二叉树,返回它的中序 遍历。

示例:

输入: [1,null,2,3]
1
\
2
/
3

输出: [1,3,2]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?


【思路】

前序遍历、中序遍历、后序遍历,这三种遍历方式中,前中后指的都是根节点的顺序,并且都是先遍历左子树、再遍历右子树。

中序遍历递归解法:先递归遍历左子树,再访问当前节点的值,最后递归遍历右子树。

中序遍历非递归解法:使用两个栈,一个栈(栈1)存储节点,另一个栈(栈2)存储访问标签。要想实现左根右的顺序,则需要先插入右节点,再插入根节点,最后插入左节点,实现步骤为:如果栈1的栈顶节点没被访问,则弹出该节点,并将右孩子节点(若有)加入栈中,将该节点加入栈,最后将左孩子节点(若有)加入栈中;同时栈2加入对应的是否被访问的标签。


【代码】

python版本

递归解法

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def traverse(self, node):
if not node:
return

# 左根右
self.traverse(node.left)
self.res.append(node.val)
self.traverse(node.right)

def inorderTraversal(self, root: TreeNode) -> List[int]:
self.res = []
self.traverse(root)
return self.res

非递归解法

class Solution:    
def inorderTraversal(self, root: TreeNode) -> List[int]:
'''非递归遍历'''
if not root:
return []
stack = [root]
visit = [0]
res = []
while len(stack) > 0:
# 已经遍历过,将val放到res中
if visit[-1] == 1:
res.append(stack.pop().val)
visit.pop()
# 未遍历过,则遍历左右节点(由于是栈,先保存右节点,再保存左节点)
else:
node = stack.pop()
visit_i = visit.pop()
if node.right:
stack.append(node.right)
visit.append(0)
stack.append(node)
visit.append(1)
if node.left:
stack.append(node.left)
visit.append(0)

return res

上述就是小编为大家分享的怎样返回的python中序遍历了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

节点 递归 子树 解法 内容 标签 算法 顺序 分析 存储 专业 两个 中小 代码 内容丰富 可以通过 同时 孩子 就是 思路 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蚌埠咖啡点餐软件开发公司哪家好 宁夏手机软件开发公司 中国铁塔软件开发投资 网络安全高中手抄报图片 冠鼎网络技术有限公司 网络技术员的工作总结 软件开发合同属于服务合同吗 数据库事务并发没有释放 安徽潮流软件开发价格服务标准 辛集软件开发自学网哪个好 山西曙光服务器维修多少钱 R410服务器按了F10怎么办 2018年网络安全损失 张掖青少年网络安全知识竞赛 有效方法的即时通讯软件开发 市网络安全大赛报名 电脑编程和软件开发 百宝图深圳网络技术有限 显示数据库破坏了什么意思 java软件开发月报 济南数据库数据恢复价格 灵武软件开发技术靠谱吗 软件开发合同属于服务合同吗 网络安全 技术瓶颈 穿越火线网通区哪个服务器最火 法信数据库如何申请退费 甘肃土地gis系统软件开发 我的世界七龙珠服务器2021 事业编人员搞软件开发 创建数据库的讨论
0