二叉树的后序非递归遍历就比较难写,因为涉及到判断节点的访问状态…

现在有个很巧妙的方法:

前序:根->左->右
后序:左->右->根

那么可以把后序当作:根->右->左,然后再反转一下即可。

vector<TreeNode*> order(TreeNode* root) {vector<TreeNode*> vr;stack<TreeNode*> sk;TreeNode* p = root;while (!sk.empty() || p) {while (p) {sk.push(p);vr.push_back(p->val);p = p->right;}p = sk.top();sk.pop();    p = p->left;}reverse(vr.begin(),vr.end());return vr;
}

原文链接:https://blog.csdn.net/Mr_HHH/article/details/80212130

二叉树后续遍历非递归相关推荐

  1. 后序遍历的非递归算法python_刷题系列 - Python用非递归实现二叉树后续遍历

    顺便把Python用非递归实现二叉树后续遍历也写了. 其实前序中序和后续都是针对父节点说的.比如下面这个最简单二叉树. 前序就是ABC,父节点A在前 中序就是BAC,父节点A在中间 后序就是BCA,父 ...

  2. 对于二叉树三种非递归遍历方式的理解

    利用栈实现二叉树的先序,中序,后序遍历的非递归操作 栈是一种先进后出的数据结构,其本质应是记录作用,支撑回溯(即按原路线返回):因此,基于其的二叉树遍历操作深刻的体现了其特性: 若后续的输入和其前面的 ...

  3. 二叉树的遍历(递归与非递归实现)

    二叉树的遍历(递归与非递归实现) 二叉树的实现(三叉链表的形式) public class XieChaoThreeLinkBinTree<E> {public static class ...

  4. 二叉树的遍历 (递归和非递归实现)

    二叉树的遍历 (递归实现) 用C++实现二叉树的"先根遍历"存储. 用C++实现二叉树的"先根遍历"."中根遍历"."后根遍历&q ...

  5. 二叉树的遍历(递归,非递归,Morris)

    二叉树的遍历 目录 递归遍历 非递归遍历 Morris遍历 1. 递归遍历 递归版遍历只要当前节点不为null,就可以三次回到当前节点. public static void preOrderRecu ...

  6. 数据结构(六)二叉树的遍历(递归非递归方法)

    数据结构(六)二叉树的遍历(递归非递归方法) 一.递归方法 1.先序遍历 void PreOrder(BiTree T) {visit(T);PreOrder(T->LChild)PreOrde ...

  7. 二叉树前序、中序、后序遍历非递归写法的透彻解析

    前言 在前两篇文章二叉树和二叉搜索树中已经涉及到了二叉树的三种遍历.递归写法,只要理解思想,几行代码.可是非递归写法却很不容易.这里特地总结下,透彻解析它们的非递归写法.其中,中序遍历的非递归写法最简 ...

  8. 二叉树后序遍历_二叉树后序遍历非递归实现

    二叉树的后序遍历非递归实现是三种遍历实现里面最复杂的一种了. 后序遍历的顺序是左节点-右节点-根节点,因为二叉树每个节点只有指向子节点的指针而没有指向父节点的指针,因此我们需要一个额外的变量来记录是否 ...

  9. 线索二叉树中序非递归线索化以及递归线索化构建和遍历算法

    引文 大部分教材给出了 线索二叉树的中序递归线索化以及中序遍历,但是没给出非递归,现在网上大部分非递归算法代码各种条件判断写的比较离谱,所以干脆自己总结了一个清晰的.线索二叉树中序非递归线索化以及递归 ...

最新文章

  1. Android Studio 设置git 提交代码
  2. local map at cambridge
  3. python 曲线拟合_Python实现数学模型(插值、拟合和微分方程)
  4. python中set集合如何决定是否重复?
  5. 设备驱动模型之device-driver
  6. 列表数据提交_Mybatis-实现数据的增删改查
  7. Owner Useful links
  8. var _ biz.GreeterRepo = (*greeterRepo)(nil)的总结
  9. SpringCloud工作笔记083---Idea中启动多个项目的时候_内存调整_节省内存
  10. 发展分布式光伏要理顺价格机制
  11. MongoDB的ObjectId生成原理
  12. CDHtmlDialog探索----WebBrowser扩展和网页Javascript错误处理
  13. 《java学习二》jvm性能优化-----认识jvm
  14. zmap扫描mysql_ZMap扫描机制剖析
  15. px和毫米的换算_px与mm换算(px换成mm)
  16. 软件的开发模型之瀑布型和快速原型
  17. mysql错误代码1064_如何解决mysql错误代码1064
  18. python复制word中的内容,包括格式、图片、文字
  19. 可长时间佩戴的耳机真的存在吗?骨传导耳机是否对耳朵伤害更小?
  20. python 多线程卡死跳出_解决python线程卡死的问题

热门文章

  1. python安装第三方库-python第三方库的四种安装方法
  2. python爬虫代码1000行-几行Python代码爬取3000+上市公司的信息
  3. 用python画烟花-用python实现漂亮的烟花demo
  4. python处理流程-python流程处理
  5. python简单代码演示效果-演示python如何创建和使用一个简单的元类的代码
  6. python自动测试p-Python实践60-性能调优之pstats模块
  7. python输入语句-Python中的模块导入和读取键盘输入的方法
  8. python主要用于什么-python主要用于哪些方向
  9. python input与返回值-Python基础教程之输入输出和运算符
  10. python培训比较好的机构-学Python哪个机构好?老男孩Python培训班