`
endual
  • 浏览: 3558341 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

二叉树怎样遍历

 
阅读更多

关于二叉树的遍历

dzsc.com文章出处: 发布时间: 2009/09/10 | 2667 次阅读 | 0次推荐 | 0 条留言

  作者: 曹忠明,华清远见嵌入式学院讲师。

  二叉树遍历就是沿某条搜索路径周游二叉树,对树中的每一个节点访问一次且仅访问一次。由于二叉树的递归性质,遍历算法也是递归的。

  二叉树的遍历有先序遍历、中序遍历和后序遍历。下面以(图一)中二叉树介绍一下这三种遍历。

 

 

  (图一) 二叉树

  1、先序遍历

  先序遍历的遍历规则是(中 前 后),中就是父节点,前就是左孩子,后是右孩子。既先访问当前节点,再访问左子树,最后访问右子树。这个过程是由根节点开始的一个递归的过程。以上面这个二叉树为例。他的遍历过程为:

  (1)ABC

  (2)A(BD)(CE)

  (3)A(B(DF))(C(EGH))

  算法实现为:

  PREORDER ( bitree *r)

  {

  if ( r = = NULL )

  return ;                                      /*空树返回*/

  printf ( " %c ",r->data );                     /*先访问当前节点*/

  PREORDER ( r->lchild );                    /*再访问该节点的左子树*/

  PREORDER ( r->rchild );                   /*最后访问该节点右子树*/

  }

  2、中序遍历

  中序遍历的遍历规则是(前 中 后),既访先问左子树,再访问当前节点,最后访问右子树。他的遍历过程为:

  (1)BAC

  (2)(DB)A(CE)

  (3)((DF)B)A(C(GEH)

  算法实现为:

  INORDER ( bitree *r)

  {

  if ( r = = NULL )

  return ;                                       /*空树返回*/

  INORDER ( r->lchild );                      /*先访问该节点的左子树*/

  printf ( " %c ",r->data );                     /*再访问当前节点*/

  INORDER ( r->rchild );                     /*最后访问该节点右子树*/

  }

  3、后序遍历

  中序遍历的遍历规则是(前 后 中),既先访问当前节点的左子树,在访问当前节点的右子树,最后访问当前节点。他的遍历过程为:

  (1)BCA

  (2)(DB)(EC)A

  (3)((FD)B)((GHE)C)A

  算法实现为:

  POST ORDER ( bitree *r)

  {

  if ( r = = NULL )

  return ;                                       /*空树返回*/

  POSTORDER ( r->lchild );                 /*先访问该节点的左子树*/

  POSTORDER ( r->rchild );                /*再访问该节点右子树*/

  printf ( " %c ",r->data );                     /*最后访问当前节点*/

  }

  由上面一个例子可以看出,这是一个递归的过程,由根节点开始,递归的对各自的孩子结点按规则遍历。

  “本文由华清远见 http://www.embedu.org/index.htm 提供”

分享到:
评论

相关推荐

    二叉树的遍历二叉树的遍历二叉树的遍历二叉树的遍历.txt

    二叉树的遍历二叉树的遍历二叉树的遍历二叉树的遍历二叉树的遍历

    二叉树先序遍历、中序遍历和后序遍历非递归算法 C++源码

    用C++写的二叉树先序遍历、中序遍历和后序遍历非递归算法

    二叉树的遍历以及创建.zip

    二叉树的遍历以及创建.zip二叉树的遍历以及创建.zip二叉树的遍历以及创建.zip二叉树的遍历以及创建.zip二叉树的遍历以及创建.zip二叉树的遍历以及创建.zip二叉树的遍历以及创建.zip二叉树的遍历以及创建.zip二叉树的...

    【C语言二叉树遍历实例】C语言二叉树遍历实例

    二叉树的遍历C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历实例C语言二叉树遍历...

    数据结构课程设计报告-二叉树的遍历.docx

    本报告基于二叉树的遍历方法,旨在通过递归和非递归两种方法创建一棵二叉树,并对其进行先序遍历、中序遍历、后序遍历及层次遍历,并求出该二叉树的深度和叶子结点数。同时,报告还实现了查找功能,能够输入一个结点...

    二叉树各种遍历算法的C++实现

    在这个主题中,我们将深入探讨二叉树的三种主要遍历方法:前序遍历、中序遍历和后序遍历,以及它们在C++中的实现方式。 1. **前序遍历**:前序遍历的顺序是根节点 -> 左子树 -> 右子树。在C++中,递归实现可以如下...

    二叉树的遍历实验报告.pdf

    1. 二叉树遍历的概念与目的: 遍历二叉树是为了访问树中的所有节点,按照特定的顺序执行操作,如查找、插入或删除节点。在二叉树的应用中,遍历常用于解决问题,如查找特定属性的节点,或者对所有节点进行统一处理。...

    二叉树层次遍历.rar

    数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例二叉树层次遍历 数据结构课程设计实例...

    C++ 二叉树的先序遍历、中序遍历和后序遍历非递归算法

    用C++写的,包括二叉树的构建,二叉树的先序遍历、中序遍历和后序遍历非递归算法。

    完全二叉树的层序遍历-labview

    完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全二叉树的层序遍历-labview完全...

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

    这是数据结构中二叉树的后序遍历的非递归算法的源代码。

    二叉树的先序遍历

    c语言中关于二叉树的先序遍历,链表的创建

    二叉树层序遍历-实现代码-队列

    /* 设栈元素为二叉树的指针类型 */ typedef struct { QElemType *base; int front; /* 头指针,若队列不空,指向队列头元素 */ int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */ } SqQueue; ...

    二叉树的遍历和排序系统

    通过这些工具,我们可以更直观地理解和操作二叉树,比如观察不同遍历方式下的节点顺序,或者查看经过插入操作后二叉搜索树的形态,从而加深对二叉树遍历和排序的理解。 总之,二叉树的遍历和排序是计算机科学中基础...

    二叉树建立遍历实验报告

    在二叉树的遍历中,中序遍历是一种常见的方法,它遵循“左-根-右”的访问顺序,即首先遍历左子树,然后访问根节点,最后遍历右子树。 在二叉链表作为存储结构的二叉树中,每个节点包含数据域(用于存储节点的值)和...

    二叉树的遍历 C语言 数据结构课设

    二叉树的遍历 C语言 数据结构课设 本文将详细讲解二叉树的遍历的实现,包括二叉树的存储、先序遍历、中序遍历、后序遍历和叶子结点的统计。 一、需求分析 二叉树的遍历是数据结构课程的经典案例,本文将使用 C ...

    二叉树的遍历的非递归算法(C++模板实现)

    使用C++模板、类的技术实现了二叉树的中序遍历,在BC3.1已经测试成功

    什么是二叉树的遍历以及学习二叉树的遍历的意义

    ### 二叉树遍历的重要性及其意义 #### 一、二叉树的遍历概念 在探讨二叉树遍历的重要性和意义之前,首先需要明确什么是二叉树的遍历。简单来说,二叉树的遍历就是按照某种确定的顺序访问二叉树中的所有节点的过程...

    二叉树的递归遍历,中序遍历,先序遍历,后序遍历

    二叉树的递归遍历 二叉树是一种重要的数据结构,它广泛应用于计算机科学和信息技术领域。二叉树的遍历是指从二叉树的根结点出发,访问树中每个结点的过程。二叉树的遍历有多种方式,本文将介绍二叉树的递归遍历,...

Global site tag (gtag.js) - Google Analytics