二叉树实现先序遍历(迭代版)
来源:互联网 发布:windows mobile 编辑:程序博客网 时间:2024/06/03 09:36
二叉树实现
二叉树实现代码
先序遍历顺序
- 首先访问当前节点
- 其他访问左子树(如果存在)
- 最后访问右子树(如果存在)
先序遍历图解
先序遍历代码思路
- 先序遍历可分解为两段
- 沿最左侧通路自顶而下访问各节点
- 借助辅助栈,将访问的节点放入栈中,方便后续自下而上的遍历
- 自底而上遍历对应的右子树
- 当右子树中存在左子树时,继续进入左子树向下访问
- 沿最左侧通路自顶而下访问各节点
先序遍历代码
//先序遍历 public ArrayList<E> travPre() { LinkedList<Node<E>> stack = new LinkedList<Node<E>>();//辅助栈 ArrayList<E> al = new ArrayList<E>(); Node<E> x = this; while(true) { visitAlongLeftBreanch(x,al,stack); if( stack.isEmpty()) return al; x = stack.pop(); } } private void visitAlongLeftBreanch(Node<E> x,ArrayList<E> al,LinkedList<Node<E>> s) { while(x != null) { al.add(x.e); s.push(x.rc); //读取左孩子得值,将右孩子压入栈 x = x.lc; } }
迭代版与递归版比较
- 递归版遍历算法时间、空间复杂度的常系数,相对于迭代版更大。
- 递归版本代码相对于迭代版本更加简明
参考资料
- 数据结构(c++语言版)(第三版)
- 邓俊辉 编著
阅读全文
0 0
- 二叉树实现先序遍历(迭代版)
- 先序遍历二叉树
- 先序遍历二叉树
- 二叉树 - 先序遍历
- 先序遍历二叉树
- 先序遍历二叉树
- 【二叉树】先序遍历二叉树
- 如何实现二叉树的非递归先序遍历
- 【二叉树遍历】先序---非递归实现
- 二叉树的先序遍历非递归实现方法
- 栈实现二叉树非递归先序遍历
- 数组实现根据二叉树的先序遍历和中序遍历构造二叉树
- C++ 二叉树实现 创建,先序遍历,中序遍历,后序遍历
- C实现二叉树的先序遍历,中序遍历,后序遍历
- c语言实现二叉树的先序遍历,中序遍历,后序遍历
- 二叉树T 的先序遍历、中序遍历、后序遍历(递归实现)
- java实现二叉树的先序遍历,中序遍历,后序遍历
- 实现二叉树的先序遍历、中序遍历、后序遍历
- 线程初步(四)--小练习
- PHP简单图形图像处理
- jsonp方法及原理
- MongoDB基本操作
- 安装JDK9后eclipse无法启动问题
- 二叉树实现先序遍历(迭代版)
- 四. 正则表达式的使用
- GIT本地删除除master以外所有分支
- Leetcode Swap Nodes in Pairs
- linux 下 *.so动态库引入
- Linux并发服务器编程之多线程并发服务器
- 4. 工厂模式
- 关于QT的 常量中有换行符 的问题
- java面试题及答案