二叉树实现中序遍历(迭代版)
来源:互联网 发布:codeblock多文件编程 编辑:程序博客网 时间:2024/05/21 06:18
二叉树实现
二叉树实现代码
中序遍历顺序
- 首先访问当前节点的左子树(如果存在)
- 再访问当前节点
- 最后访问右子树(如果存在)
中序遍历图解
中序遍历代码思路
- 中序遍历可分解为d+1段
- 沿最左侧通路自底而上访问各节点
- 借助辅助栈,将访问的节点放入栈中
- 自底而上遍历对应的右子树
- 当右子树中存在左子树时,继续进入左子树向下访问
- 沿最左侧通路自底而上访问各节点
中序遍历代码
//子树中序遍历public ArrayList<E> travIn() { LinkedList<Node<E>> stack = new LinkedList<Node<E>>();//辅助栈 ArrayList<E> al = new ArrayList<E>(); Node<E> x = this; while(true) { goAlongLeftBreanch(x,stack); if(stack.isEmpty()) return al; x = stack.pop(); al.add(x.e); x = x.rc; }}rivate void goAlongLeftBreanch(Node<E> x,LinkedList<Node<E>> s) { while(x != null) { s.push(x); //将左分支压入栈 x = x.lc; }}
迭代版与递归版比较
- 递归版遍历算法时间、空间复杂度的常系数,相对于迭代版更大。
- 递归版本代码相对于迭代版本更加简明
参考资料
- 数据结构(c++语言版)(第三版)
- 邓俊辉 编著
阅读全文
0 0
- 二叉树实现中序遍历(迭代版)
- 二叉树的中序遍历实现
- 二叉树实现先序遍历(迭代版)
- 前序遍历二叉树,中序遍历二叉树,后序遍历二叉树 c#实现
- 二叉树前序遍历 中序遍历 后续遍历 算法实现
- 数组实现根据二叉树的先序遍历和中序遍历构造二叉树
- C++ 二叉树实现 创建,先序遍历,中序遍历,后序遍历
- C实现二叉树的先序遍历,中序遍历,后序遍历
- c语言实现二叉树的先序遍历,中序遍历,后序遍历
- 二叉树T 的先序遍历、中序遍历、后序遍历(递归实现)
- java实现二叉树的先序遍历,中序遍历,后序遍历
- 非递归实现二叉树的后序遍历、前序遍历、中序遍历
- 实现二叉树的先序遍历、中序遍历、后序遍历
- 编程实现二叉树的建立,前序遍历,中序遍历和后续遍历
- leetcode | 二叉树的前序遍历、中序遍历、后续遍历的非递归实现
- 由前序遍历和中序遍历重建二叉树,再实现后续遍历
- java实现二叉树已知先序遍历和中序遍历求后序遍历
- 二叉树 先序遍历 中序遍历 后续遍历 java实现
- 机房登录91错误
- 最不喜欢的编程语言排行!StackOverflow工程师搞事情
- ADV-137三千米排名预测
- 编译生成protobuf的jar包
- Mysql索引优化
- 二叉树实现中序遍历(迭代版)
- Java 反射机制 示例
- 团队天梯赛L1-002. 打印沙漏
- MFC中用c++语言对文件操作(复制、删除、写入)
- Ubuntu16.04下搭建LAMP环境
- 2017-11-3学习心得
- windows下Mongo 集群配置
- 知识整理——AJAX
- 数据结构学习笔记之线性表