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

二叉树的先序遍历的非递归实现

一般来说,二叉树的先序遍历‌(也称‌前序遍历‌)是一种深度优先遍历方式,其访问顺序遵循“‌根左右‌”原则,即:

‌访问根节点‌;
‌递归地先序遍历左子树‌;
‌递归地先序遍历右子树‌。

核心要点

  • 别名‌:先根遍历、先序周游。
  • 时间复杂度‌:O(n),其中 n 为二叉树中节点个数。
  • 空间复杂度‌:O(h),其中 h 为树的高度(递归栈深度)。

非递归实现是利用了栈这一数据结构。其基本思路是:

1.将根节点入栈。

2.循环:

  • 弹出栈顶节点。
  • 访问当前节点。
  • 如果当前节点有右子树,则将右子树入栈。(由于栈的先进后出性质,所以先将右子树入栈,后将左子树入栈,出栈的时候是左子树先出栈,右子树后出栈,符合先序遍历的顺序)
  • 如果当前节点有左子树,则将左子树入栈。
def dfs_preorder_non_recursive(root): if root is None: return stack = [root] # 将根节点入栈。 while stack: node = stack.pop() # 弹出栈顶节点。 print(node.val) # 访问当前节点。 if node.right: stack.append(node.right) # 将右子树入栈。 if node.left: stack.append(node.left) # 将左子树入栈。
http://www.jsqmd.com/news/834161/

相关文章:

  • 如何用CoreCycler进行CPU核心稳定性测试:AMD Ryzen和Intel处理器的完整指南
  • HS2-HF Patch:为《Honey Select 2》注入新生命的魔法补丁
  • AI智能体工具集成实战:用Composio与Council构建可执行复杂任务的智能助手
  • 如何用3分钟打造你的英雄联盟智能助手:League Akari终极指南
  • 新手避坑指南:PADS 9.5 安装全流程与典型故障排查
  • D2DX:让暗黑破坏神2在现代PC上焕发新生的终极解决方案
  • 避开这些坑!STM32 Bootloader跳转后APP跑飞?HAL库外设与中断清理保姆级指南
  • 基于LLM的本地文档智能搜索:LLocalSearch部署与RAG实战指南
  • Netgear路由器终极救援指南:如何用免费开源工具nmrpflash快速修复“变砖“设备
  • 跨平台PDA扫码监听实战:从霍尼韦尔EDA50P到多厂商适配的Uniapp通用方案
  • 2026年五家geo推广交付效益横评及企业 GEO 落地实务 - 资讯焦点
  • 告别IAR/Keil:用免费开源工具链(Eclipse+GCC+JLink)玩转杰发AC7840开发与调试
  • 保姆级教程:在Ubuntu 20.04上从源码编译aarch64-linux-gnu交叉工具链(GCC 9.2.0 + Glibc 2.30)
  • 如何永久保存微信聊天记录?WeChatMsg本地备份完整解决方案
  • 探索Windows HEIC缩略图:跨平台照片管理深度解析
  • 2026年4月国内服务好的不锈钢激光切割加工定制厂家推荐,不锈钢卷圆加工,不锈钢激光切割加工批发厂家哪家强 - 品牌推荐师
  • FPGA_数码管驱动优化:基于74HC595的管脚复用实战
  • Vim编辑器集成AI助手:vim-ai插件实战指南与生产力提升
  • 告别U盘!用FTP给西门子840Dsl/828D机床传程序,保姆级配置教程
  • FanControl终极指南:免费开源Windows风扇控制神器,一键解决散热与噪音难题
  • Cadence 617实战:用gmid方法搞定一个10MHz带宽的两级运放(附完整参数表)
  • 【Web】CTFSHOW 高频漏洞实战解析:从PIN码计算到无字母数字RCE
  • 2026年4月国标弯头品牌实力实力,品质与交付谁更强,国标弯头/碳钢管件/无缝钢管,国标弯头供货商哪家靠谱 - 品牌推荐师
  • 避坑指南:STM32C8T6三个串口中断同时工作,如何解决数据错乱和优先级冲突?
  • 别再只会用0x22读VIN了!手把手教你用UDS诊断服务读取ECU里的‘隐藏数据’(附DID清单)
  • 2026最新:论文AI率90%→10%!DeepSeek 4大免费降AI率指令+3款降AI工具亲测 - 降AI实验室
  • Ledger App中国官方应用下载入口公布|Ledger Wallet 下载使用说明 - 资讯焦点
  • ARM SCP固件架构与安全启动机制解析
  • 虚拟化网络可靠性评估与优化实践
  • Rakkas全栈React框架:一体化开发体验与Vite驱动的实践指南