BST(或者普通树)的中序遍历非递归版本
2012-11-19 23:06
204 查看
写了一下中序的迭代版本。用了昨天的BST测试了一下。对栈的使用得深刻理解。
我总结的就是,需要递归到头才做的事情(这里是根和右子树),压栈处理,等其他处理好之后把它提取出来,做之前同样的处理即可。
前序和后序的明天补上,困。
void inorder(BSTnode* root) { BSTnode* p = root; sq.push_back(p); p = p->m_left; while(!sq.empty()) { while(p) { sq.push_back(p); p = p->m_left; } p = *(sq.end()-1); sq.pop_back(); cout << p->m_value << endl; p = p->m_right; } }
我总结的就是,需要递归到头才做的事情(这里是根和右子树),压栈处理,等其他处理好之后把它提取出来,做之前同样的处理即可。
前序和后序的明天补上,困。
相关文章推荐
- BST(或者普通树)的前序遍历迭代版本
- POJ 3422 最小费用最大流 zkw或者普通版本
- 判定二叉树是否是BST 递归版本
- 二叉树前序遍历,中序遍历非递归版本
- 二叉树先序遍历,中序遍历,后续遍历 非递归版本+二叉树转换为string保存+二叉树的层次遍历+平衡二叉树判断
- 中序遍历的非递归版本
- 基于.net4.0或者更低版本的INotifyPropertyChanged接口测试
- 编程算法 - 中序遍历 递归/迭代 代码(C)
- 自己写二分法……(普通循环和运用递归思想)
- LintCode Binary Tree Inorder Traversal 二叉树的中序遍历(非递归)
- 升级 OS X 中的 PHP 版本到5.4 或者 5.5
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- 删除、去掉字符串尾部的0或者某个特定字符(递归实现)
- 简单判断MSSQL数据库版本(2000或者2005)
- 二叉树——中序遍历(递归/非递归)
- CMAKE 指定编译调试版本或者发布版本
- 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
- Linux如何看自己时候装好Apache或者看安装的版本 apachectl -v
- 计算二叉树的高度递归版本
- 二叉树遍历,已知前序遍历与中序遍历,求后续遍历 使用java(递归方式)实现