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

二叉树前序遍历的非递归算法

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

    本文导语:  二叉树的前序遍历是先根节点,然后如果有左子树则再先序遍历左子树,然后如果有右子树则再先序遍历其又子树。递归算法如下 代码如下: void   preorder(Betree *t){   if(t==null) return;visit(t);//访问该节点preorder(t->lchild);preorder(t-...

二叉树的前序遍历是先根节点,然后如果有左子树则再先序遍历左子树,然后如果有右子树则再先序遍历其又子树。
递归算法如下
代码如下:

 void   preorder(Betree *t)
{   if(t==null) return;visit(t);//访问该节点preorder(t->lchild);preorder(t->rchild); }

当然递归算法是隐式使用了栈。我们仔细分析这个过程,先是取出了根节点进行了访问,然后我们把根节点退栈,退栈后必然有节点进栈,怎么办呢?根节点只能直接访问到rchild和lchild,如果是左子树的根节点进了栈,那么必然是后访问之,所以必然是rchild先进栈,lchild后进栈。可以画图加深理解。
那么现在写出先序遍历二叉树的算法。
代码如下:

void preorder(Betree *t)
{ //算法中我们使用一维数组来模拟一个顺序栈
     if(t==null) return;//为空树的话完全没有必要进行下面的操作    
     Betree *stack[max];
     top=1;stack[top]=t;//根节点入栈
     while(top>0)
    {   nd=stack[top];//取出根节点  top=top-1;//退栈   visit(nd->data); //访问根节点 if(nd->rchild!=null) { top=top+1;stack[top]=nd->rchild;} //根节点有右子树,将其进栈,等到左子树访问完后再访问之
if(nd->lchild!=null) { top=top+1;stack[top]=nd->lchild;}
   }
}

    
 
 

您可能感兴趣的文章:

  • 先序遍历二叉树的递归实现与非递归实现深入解析
  • 那位大哥能助小弟写一个递归遍历所有文件的函数?
  • Java递归 遍历目录的小例子
  • c#递归遍历文件夹示例
  • C++实现二叉树非递归遍历方法实例总结
  • PHP不用递归遍历目录下所有文件的代码
  • C语言二叉树的非递归遍历实例分析
  • C++非递归遍历磁盘文件和递归遍历磁盘文件的程序示例
  • shell脚本递归遍历目录及子目录的例子分享
  • 深入遍历二叉树的各种操作详解(非递归遍历)
  • 探讨:C++实现链式二叉树(用非递归方式先序,中序,后序遍历二叉树)
  • 深入理解二叉树的非递归遍历
  • 二叉树遍历 非递归 C++实现代码
  • C语言实现二叉树遍历的迭代算法
  • 基于Java实现的图的广度优先遍历算法
  • c++二叉树的几种遍历算法
  • 二叉树的遍历算法(详细示例分析)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c++ stl容器set成员函数介绍及set集合插入,遍历等用法举例
  • jquery遍历筛选数组与遍历解析json对象
  • c++类库Boost.Bimap(遍历,插入,查找,删除)参考代码
  • php遍历数组四种方法 php数组遍历实例
  • c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
  • 请问如何遍历目录并拷贝文件?使用bash Shell。
  • java map(HashMap TreeMap)用法:初始化,遍历和排序详解
  • 高分请教高手!目录定时遍历????
  • c++ STL List查找遍历及各成员函数用法详细介绍
  • PHP文件遍历小例子
  • python内置映射类型(mapping type):dict哈希字典遍历方式及其它用法举例
  • C#中遍历DataSet数据集对象实例
  • php无限遍历目录代码
  • php遍历目录与其下所有文件
  • jquery进行数组遍历如何跳出当前的each循环
  • jquery遍历checkbox代码与说明
  • 请问怎么用Java实现一个URL的遍历??急!!!!
  • 请问怎样遍历一个hashtable
  • 在遍历目录的情况下如果遇到符号连接…………
  • Shell programme:怎样遍历整个/目录
  • 遍历其文件动态变化的目录


  • 站内导航:


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

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

    浙ICP备11055608号-3