二叉树非递归遍历(C++)
来源:互联网 发布:macbook免费清理软件 编辑:程序博客网 时间:2024/06/05 23:45
前序遍历
void f(TreeNode *r,vector<int>&a)
{
stack<int> s;
TreeNode *t=r;
while(!s.empty()||t)
{
if(t)
{
s.push(t);
a.push_back(t->val);
t=t->left;
}
else
{
t=s.top();
s.pop();
t=t->right;
}
}
}
中序遍历
void f(TreeNode *r,vector<int>&a)
{
stack<int> s;
TreeNode *t=r;
while(!s.empty()||t)
{
if(t)
{
s.push(t);
t=t->left;
}
else
{
t=s.top();
a.push_back(t->val);
s.pop();
t=t->right;
}
}
}
后序遍历void f(TreeNode *r,vector<int>&a)
{
stack<int> s;
TreeNode *t=r;
TreeNode *pre=NULL;
while(!s.empty()||t)
{
while(t)
{
s.push(t);
t=t->left;
}
t=s.top();
if(!t->right||t->right==pre) //右节点访问过之后也要输出根节点
{
a.push_back(t->val);
pre=t;
t=NULL;
s.pop();
}
else
{
t=t->right;
}
}
}
- 二叉树非递归遍历(C++)
- 先中后序递归非递归遍历二叉树(c#)
- 【C++】非递归遍历二叉树
- 二叉树遍历(递归,非递归)
- 二叉树的遍历(c语言非递归算法)
- 二叉树非递归遍历 (前,中,后) c
- 二叉树的递归与非递归遍历源码(C++)
- 二叉树的递归,非递归遍历(C++)
- C语言二叉树的遍历,递归和非递归
- 【C++】二叉树遍历--递归与非递归实现
- 二叉树遍历(递归、非递归、Morris遍历)
- 二叉树遍历(递归、非递归、Morris遍历)
- 二叉树的遍历(递归+非递归+层次遍历)
- 二叉树遍历(非递归)
- 二叉树的遍历(非递归)
- 二叉树遍历(非递归版)
- 二叉树遍历(非递归算法)
- 二叉树遍历(前中后层序/非递归)
- 图文演示通过虚拟打印机生成pdf的使用技巧
- oracle 误删 恢复数据
- 【POI2011】 Meteors 整体二分(写代码时的坑点)
- php_lang_ref:Language Reference >> Functions >> Anonymous functions
- 股市行情大盘走势最新解读 抢先布局选股有妙招
- 二叉树非递归遍历(C++)
- Linux Device和Driver注册过程的源码流程分析
- 插入排序高效改进之希尔排序
- ArrayList源码分析
- HTML(4)
- python接口自动化测试(一)
- c++ 各进制赋值、int/char转换、sscanf/sprintf、位操作运算
- TCP/IP协议栈的基本工作原理
- leetcode(287). Find the Duplicate Number