java二叉树非递归之中序遍历
来源:互联网 发布:传奇db数据 编辑:程序博客网 时间:2024/06/05 17:02
思路:使用辅助栈改写递归程序,中序遍历没有前序遍历好写,其中之一就在于入栈出栈的顺序和限制规则。我们采用「左根右」的访问顺序可知主要由如下四步构成。
步骤:
1.首先需要一直对左子树迭代并将非空节点入栈
2.节点指针为空后不再入栈
3.当前节点为空时进行出栈操作,并访问栈顶节点
4.将当前指针p用其右子节点替代
步骤2,3,4对应「左根右」的遍历结构,只是此时的步骤2取的左值为空。
步骤:
1.首先需要一直对左子树迭代并将非空节点入栈
2.节点指针为空后不再入栈
3.当前节点为空时进行出栈操作,并访问栈顶节点
4.将当前指针p用其右子节点替代
步骤2,3,4对应「左根右」的遍历结构,只是此时的步骤2取的左值为空。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<Integer>(); Stack<TreeNode> s = new Stack<TreeNode>(); while (root != null || !s.empty()) { if (root != null) { s.push(root); root = root.left; } else { root = s.pop(); result.add(root.val); root = root.right; } } return result; } }
转载自:http://blog.csdn.net/u013812939/article/details/47295311
0 0
- java二叉树非递归之中序遍历
- java二叉树非递归之中序遍历
- 二叉树非递归遍历之中序遍历
- 二叉树之中序遍历(递归和非递归两种遍历)
- JAVA递归、非递归遍历二叉树
- java递归,非递归遍历二叉树
- JAVA递归、非递归遍历二叉树
- java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历
- 二叉树之中序遍历
- 非递归遍历二叉树--java实现
- java二叉树的非递归遍历
- 二叉树非递归遍历Java实现
- java 二叉树的递归遍历和非递归遍历
- java二叉树非递归之前序遍历
- java二叉树非递归之前序遍历
- 数据结构二叉树遍历之中序遍历
- 非递归先序遍历二叉树
- 后序遍历二叉树非递归
- Swift3.0教程(二)-基本数据类型
- linux下的库函数.so和.a
- 在PB中动态修改数据窗口DW的SQL语句方法注意事项
- 100道动态规划——4 UVA 1331 Maximum Triangulation DP 计算几何
- 不安全的直接对象引用
- java二叉树非递归之中序遍历
- Linux下如何查找一个函数在哪个库中
- Java map 存取对象
- Android快速打造超简单CircleImageView
- [iOS]仿微博视频边下边播之封装播放器
- JSP表单的发送
- 基于Visual Studio AddIns(插件)的形式开发的C#及JS的代码注释工具
- 命名空间
- 《大话设计模式》-- 第24个 职责链模式