当前位置: 首页 > news >正文

算法题:二叉树遍历总结

1.题目要求

对比总结二叉树三种遍历方式(递归方式 和 非递归方式)

2.Python实现

2.1 先序遍历

题目:LeetCode 144. 二叉树的前序遍历
解答:先输出根节点根 → 左 → 右

# 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 = rightclassSolution:defpreorderTraversal(self,root:Optional[TreeNode])->List[int]:res=[]defdfs(root):ifnotroot:returnres.append(root.val)dfs(root.left)dfs(root.right)dfs(root)returnresclassSolution:defpreorderTraversal(self,root:Optional[TreeNode])->List[int]:ifnotroot:return[]res,stack=[],[root]whilestack:node=stack.pop()res.append(node.val)# 和后序区别:先右、后左入栈ifnode.right:# 特别注意的地方stack.append(node.right)ifnode.left:stack.append(node.left)returnres

2.2 中序遍历

题目:LeetCode 94. 二叉树的中序遍历
解答:中间输出根节点左 → 根 → 右

classSolution:definorderTraversal(self,root:Optional[TreeNode])->List[int]:res=[]defdfs(root):ifnotroot:returndfs(root.left)res.append(root.val)dfs(root.right)dfs(root)returnresclassSolution:definorderTraversal(self,root:Optional[TreeNode])->List[int]:res=[]stack=[]cur=rootwhilecurorstack:whilecur:# 1. 不断向左走,节点全部入栈stack.append(cur)cur=cur.left cur=stack.pop()# 2. 左走到尽头,弹出栈顶节点并访问res.append(cur.val)cur=cur.right# 3. 转向右子树继续遍历returnres

2.3 后续序遍历

题目:LeetCode 145. 二叉树的后序遍历
解答:最后输出根节点左 → 右 → 根

classSolution:defpostorderTraversal(self,root:Optional[TreeNode])->List[int]:res=[]defdfs(root):ifnotroot:returndfs(root.left)dfs(root.right)res.append(root.val)dfs(root)returnresclassSolution:defpostorderTraversal(self,root:Optional[TreeNode])->List[int]:ifnotroot:return[]res,stack=[],[root]whilestack:node=stack.pop()res.append(node.val)ifnode.left:# 特别注意的地方stack.append(node.left)ifnode.right:stack.append(node.right)returnres[::-1]
http://www.jsqmd.com/news/1326064/

相关文章:

  • 终极指南:如何免费解密网易云音乐NCM加密文件
  • 免费微信投票小程序有哪些?云众评选无广告纯净投票页面 - 微信投票小程序
  • 文泉驿微米黑:为什么这款5MB字体能成为中文显示的最佳选择?
  • Unity大型空间站模拟系统开发实战:从模块化架构到资源管理
  • 大气层系统:重塑Switch自制固件的技术革命
  • 结婚公证书怎么办理?需要什么材料? - 实用干货补给站
  • 终极指南:如何彻底禁用Windows Defender并重获系统控制权
  • 迁移实战派01:ETL迁移基础知识-思路和规划
  • UE5蓝图Branch节点源码解析与避坑指南
  • 2026热门AI修图工具实测:三款对话式修图体验对比 - GrowUME
  • 企业级AI代码助手安全部署指南:从DoorDash事件看风险管控
  • 如何在2025年免费畅玩经典Flash游戏?终极解决方案指南
  • SQL语句的解析过程
  • Windows系统bcryptprimitives.dll缺失的解决方案
  • Unity渲染优化:从DrawCall到Batches与SetPass Calls的实战指南
  • 机器学习从入门到实践:核心知识与项目开发指南
  • 鸣潮工具箱:画质优化与抽卡分析的一站式解决方案
  • 2026年使用寿命长的压装电缸品牌推荐 高精度压装电缸选择指南 - 全域品牌推荐
  • 2026 福州卖金新规科普!牢记黄金回收四不五要红线,本地人出手黄金大多选易奢福 - 奢侈品回收实体店探店
  • 改变AI格局的Transformer:大模型的“发动机“长什么样?
  • C语言循环控制与结构化程序设计详解
  • 智能体工程评测:从概念验证到稳定交付的系统化实践
  • AI人力资源评估系统的漏洞与反制策略
  • SSM框架构建游戏交易平台开发实践
  • 2026景观石雕立体字厂家选购指南及实力盘点 - 曲阳嘉华园林
  • 终极小红书内容保存指南:3种简单方法让你的收藏永不消失
  • 抖音批量下载终极指南:3分钟学会高效下载无水印视频和封面
  • 基于压缩感知的图像压缩加密一体化算法与Matlab实现
  • 跨平台游戏模组下载终极指南:WorkshopDL免费解锁Steam创意工坊
  • I2C通信故障排查:从信号原理到实战调试的完整指南