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

先序遍历二叉树的递归实现与非递归实现深入解析

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

    本文导语:  1、先序遍历二叉树  递归实现思想:若二叉树为空,返回。否则 1)遍历根节点;2)先序遍历左子树;3)先序遍历右子树; 代码: 代码如下:template void PreOrder(nodeType *root)  {      if(root==NULL)          return ;      visit(r...

1、先序遍历二叉树  递归实现
思想:若二叉树为空,返回。否则
1)遍历根节点;
2)先序遍历左子树;
3)先序遍历右子树;

代码:

代码如下:

template
void PreOrder(nodeType *root) 

    if(root==NULL) 
        return ; 
    visit(root->data); // visit the data
    PreOrder(root->lchild); //递归调用,先序遍历左子树 
    PreOrder(root->rchild); //递归调用,先序遍历右子树 


2、先序遍历二叉树 非递归实现
思想:二叉树的非递归先序遍历,先序遍历思想:先让根进栈,只要栈不为空,就可以做弹出操作, 每次弹出一个结点,记得把它的左右结点都进栈,记得右子树先进栈,这样可以保证右子树在栈中总处于左子树的下面。

前序遍历二叉树的非递归算法思想
建立栈 Stack;
t 指向根;
当 t 不空 或 Stack 不空时反复做:
      若 t 不空,访问t,t 入 栈;t 指向左子女;
      否则:出栈顶元素到 t 中;
      t 指向右子女;
结束

代码如下:

void PreOrder_Nonrecursive(BinaryTree T)     //先序遍历的非递归   

    if(!T) return ;   
    stack s; 
    s.push(T); 
    while(!s.empty()) 
    { 
        BinaryTree temp = s.top(); 
        visit(temp->data); 
        s.pop(); 
        if(temp->rchild) 
            s.push(temp->rchild); 
        if(temp->lchild) 
            s.push(temp->lchild); 
    } 



    
 
 

您可能感兴趣的文章:

  • 那位大哥能助小弟写一个递归遍历所有文件的函数?
  • Java递归 遍历目录的小例子
  • c#递归遍历文件夹示例
  • 二叉树前序遍历的非递归算法
  • C++实现二叉树非递归遍历方法实例总结
  • PHP不用递归遍历目录下所有文件的代码
  • C语言二叉树的非递归遍历实例分析
  • C++非递归遍历磁盘文件和递归遍历磁盘文件的程序示例
  • shell脚本递归遍历目录及子目录的例子分享
  • 深入遍历二叉树的各种操作详解(非递归遍历)
  • 探讨:C++实现链式二叉树(用非递归方式先序,中序,后序遍历二叉树)
  • 深入理解二叉树的非递归遍历
  • 二叉树遍历 非递归 C++实现代码
  • 请问怎么用Java实现一个URL的遍历??急!!!!
  • PHP采用自定义函数实现遍历目录下所有文件的方法
  • C#使用yield关键字让自定义集合实现foreach遍历的方法
  • 在java的GUI的应用程序中能否实现对容器(如Frame)中的所有组件遍历?
  • JAVA遍历map的几种实现方法代码
  • python实现dict版图遍历示例
  • Jquery遍历节点的实现代码
  • 关于shell遍历查询怎么实现?
  • python二叉树遍历的实现方法
  • C++实现二叉树遍历序列的求解方法
  • C#遍历文件夹的实现代码
  • 如何在linux下用c/c++边编程实现文件夹下所有子目录文件的遍历?
  • 基于Java实现的图的广度优先遍历算法
  • 三种实现方法实现数据表中遍历寻找子节点
  • C语言实现二叉树遍历的迭代算法
  • C++实现哈夫曼树简单创建与遍历的方法
  • 在linux下如何实现文件夹的遍历?
  • C语言实现图的遍历之深度优先搜索实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












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


  • 站内导航:


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

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

    浙ICP备11055608号-3