二叉树的中序遍历的非递归算法
2012-12-26 14:17
232 查看
先回顾二叉树的中序遍历的递归算法:
先遍历左子树
然后遍历根结点
最后遍历右子树
对于左子树和右子树使用同样的思想
二叉树的中序遍历的非递归算法的思想:
中序遍历最先输出的结点是根结点的左子树中的左子树。。。(即最底层的左子树,即叶子结点的左子树),这可以通过反复执行p=p->left实现。同时要保证能回到左子树的根结点,这就需要用栈来存储在查找叶子左子树时经过的结点。这样在访问左子树后,就可以通过出栈得到此结点的根结点。
因为是中序遍历,在访问根结点后,再访问右结点,即p=p->right,原来同上左子树,知道p为空且堆栈为空
二叉树的中序遍历的非递归算法的实现:
先遍历左子树
然后遍历根结点
最后遍历右子树
对于左子树和右子树使用同样的思想
二叉树的中序遍历的非递归算法的思想:
中序遍历最先输出的结点是根结点的左子树中的左子树。。。(即最底层的左子树,即叶子结点的左子树),这可以通过反复执行p=p->left实现。同时要保证能回到左子树的根结点,这就需要用栈来存储在查找叶子左子树时经过的结点。这样在访问左子树后,就可以通过出栈得到此结点的根结点。
因为是中序遍历,在访问根结点后,再访问右结点,即p=p->right,原来同上左子树,知道p为空且堆栈为空
二叉树的中序遍历的非递归算法的实现:
相关文章推荐
- 扩展二叉树 建立 以及 前序遍历 中序遍历 后序遍历 的非递归算法
- 数据结构-----二叉树的中序遍历的非递归算法实现
- leetcode_94. Binary Tree Inorder Traversal 二叉树的中序遍历,非递归算法,栈的思想
- 二叉树的前序遍历、中序遍历和后序遍历的递归和非递归算法
- 数据结构-----中序遍历二叉树非递归算法(利用堆栈实现)
- 二叉树的中序遍历(非递归算法)
- 二叉树先序建立,先序遍历,中序遍历,后序遍历(递归)
- 二叉树前序、中序、后序三种遍历的非递归算法
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 先序建二叉树,中序遍历
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 二叉树的后序遍历非递归算法之C++实现 选择自 xuyongfeng 的 Blog
- 二叉树的先根遍历,中根遍历,后根遍历的非递归算法
- 二叉树的前序遍历,中序遍历和后序遍历(c#)
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- Validate Binary Search Tree(二叉树前序、中序遍历)
- 二叉树 中序遍历 算法
- 二叉树的中序遍历