当前位置:  编程技术>c/c++/嵌入式

二叉树遍历 非递归 C++实现代码

    来源: 互联网  发布时间:2014-10-21

    本文导语:  二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现...

二叉树的非递归遍历
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。

一.前序遍历

前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。

1.递归实现

代码如下:

void preOrder1(BinTree *root) //递归前序遍历
{
 if(root!=NULL)
{
coutisFirst=false;
s.push(temp);
p=temp->btnode->rchild;
}
 else //第二次出现在栈顶
{
coutdatarchild==NULL)||
(pre!=NULL&&(pre==cur->lchild||pre==cur->rchild)))
{
coutlchild!=NULL)
s.push(cur->lchild);
}
}
}

四.整个程序完整的代码
代码如下:

#include
#include
#include
using namespace std;

typedef struct node
{
char data;
struct node *lchild,*rchild;
}BinTree;

typedef struct node1
{
BinTree *btnode;
bool isFirst;
}BTNode;


void creatBinTree(char *s,BinTree *&root) //创建二叉树,s为形如A(B,C(D,E))形式的字符串
{
int i;
bool isRight=false;
stack s1; //存放结点
stack s2; //存放分隔符
BinTree *p,*temp;
root->data=s[0];
root->lchild=NULL;
root->rchild=NULL;
s1.push(root);
i=1;
while(idata=s[i];
p->lchild=NULL;
p->rchild=NULL;
temp=s1.top();
if(isRight==true)
{
temp->rchild=p;
cout


    
 
 

您可能感兴趣的文章:

  • 先序遍历二叉树的递归实现与非递归实现深入解析
  • 那位大哥能助小弟写一个递归遍历所有文件的函数?
  • Java递归 遍历目录的小例子
  • c#递归遍历文件夹示例
  • 二叉树前序遍历的非递归算法
  • C++实现二叉树非递归遍历方法实例总结
  • PHP不用递归遍历目录下所有文件的代码
  • C语言二叉树的非递归遍历实例分析
  • C++非递归遍历磁盘文件和递归遍历磁盘文件的程序示例
  • shell脚本递归遍历目录及子目录的例子分享
  • 深入遍历二叉树的各种操作详解(非递归遍历)
  • 探讨:C++实现链式二叉树(用非递归方式先序,中序,后序遍历二叉树)
  • 深入理解二叉树的非递归遍历
  • c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
  • c++遍历lua table示例
  • c++类库Boost.Bimap(遍历,插入,查找,删除)参考代码
  • c++ builder TreeView控件节点遍历代码
  • c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
  • C++实现二叉树遍历序列的求解方法
  • c++ STL List查找遍历及各成员函数用法详细介绍
  • c++二叉树的几种遍历算法
  • C++实现哈夫曼树简单创建与遍历的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • jquery遍历checkbox代码与说明
  • php无限遍历目录代码
  • C#的Dictionary几种遍历的代码
  • 用什么方法可以遍历一个类的所有实例?给点代码。谢谢
  • vb.net实例代码 在访问表中遍历记录
  • shell遍历目录处理特定目录的脚本代码
  • jsp遍历文件夹下的文件的代码
  • c# 迭代器 遍历文件信息的实例代码
  • JAVA遍历map的几种实现方法代码
  • java数组遍历 删除remove(示例代码)
  • 遍历目录部分代码请教其含义
  • Jquery遍历修改url请求参数的代码详解
  • php遍历目录二例代码
  • Jquery遍历节点的实现代码
  • C#遍历文件夹的实现代码
  • Jquery 三层遍历与删除的代码示例
  • javascript开源软件 iis7站长之家
  • 获取硬件信息的源代码:在遍历文件链表时出现段错误,请高手指教!
  • 这段代码不能遍历所有目录,请大神们帮看看
  • java map(HashMap TreeMap)用法:初始化,遍历和排序详解
  • jquery遍历筛选数组与遍历解析json对象
  • python内置映射类型(mapping type):dict哈希字典遍历方式及其它用法举例
  • php遍历数组四种方法 php数组遍历实例
  • 请问如何遍历目录并拷贝文件?使用bash Shell。
  • 高分请教高手!目录定时遍历????
  • PHP文件遍历小例子
  • C#中遍历DataSet数据集对象实例
  • php遍历目录与其下所有文件
  • jquery进行数组遍历如何跳出当前的each循环
  • 请问怎么用Java实现一个URL的遍历??急!!!!
  • 请问怎样遍历一个hashtable




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3