非递归前序遍历二叉树
2016-04-22 17:23
232 查看
void preOrder2(BinTree *root) //非递归前序遍历
{
stack<BinTree*> s;
BinTree *p=root;
while(p!=NULL||!s.empty())
{
while(p!=NULL)
{
cout<<p->data<<" ";
s.push(p);
p=p->lchild;
}
if(!s.empty())
{
p=s.top();
s.pop();
p=p->rchild;
}
}
}
二叉树的遍历深度优先遍历可以分为前、中、后序遍历,这里是以前序遍历为例,可以尝试遍历多叉树(非递归)
{
stack<BinTree*> s;
BinTree *p=root;
while(p!=NULL||!s.empty())
{
while(p!=NULL)
{
cout<<p->data<<" ";
s.push(p);
p=p->lchild;
}
if(!s.empty())
{
p=s.top();
s.pop();
p=p->rchild;
}
}
}
二叉树的遍历深度优先遍历可以分为前、中、后序遍历,这里是以前序遍历为例,可以尝试遍历多叉树(非递归)
相关文章推荐
- C# 异常抛出-五分制
- FAILURE: Build failed with an exception.
- android AsyncTask介绍
- 活性基因免疫靶向细胞疗法
- 技术总结
- poj 1222 EXTENDED LIGHTS OUT 增广矩阵消元法
- 防止忘记
- C++的精髓——虚函数
- 二分图-最大匹配,最小路径覆盖,最小点覆盖
- 随机算法-模拟退火
- C#连接数据库的四种方法
- git学习
- BZOJ 2124: 等差子序列 线段树维护hash
- Linux Ramdisk mini-HOWTO
- OC最实用的runtime总结
- 219. Contains Duplicate II
- 【转】谈谈 Memcached 与 Redis
- makefile定义作用及其执行过程
- android mvp架构
- NET生成缩略图