数据结构与算法分析之二叉树的三种遍历方式。--前序遍历,中序遍历和后序遍历

本文介绍了二叉树的概念及其重要操作——遍历,包括前序遍历(根-左-右)、中序遍历(左-根-右)和后序遍历(左-右-根)。并通过一个实例详细阐述了如何根据先序遍历建立和遍历二叉树的过程。
摘要由CSDN通过智能技术生成
在介绍二叉树的遍历算法之前,我们需要介绍一下二叉树以及遍历方式这些概念。
二叉树:是树的一种特殊结构,在二叉树中每个结点最多只能有两个子节点。
二叉树中最重要的操作就是遍历,通常二叉树的遍历方式有一下几种:

前序遍历:先访问根结点,再访问左结点,最后访问右结点。如图示前序遍历顺序是:10、6、4、8、14、12、16。(根结点在首位)
中序遍历:先访问左结点,再访问根结点,最后访问右结点。如图所示中序遍历顺序是:4 、6、 8 、10 、12 、14 、16 。(根结点在中间)
后序遍历:先访问左结点,再访问右结点,最后访问根结点。如图所示后序遍历顺序是:4、 8、 6 、12 、16 、14 、10。(根结点在最后)
一个二叉树的例子

话不多说,直接上一道例题深刻了解二叉树的建立和遍历过程。题目:建立二叉树,并输出每个字符所在的层数。二叉树如下图所示:

这里写图片描述

如图所示,这是以个普通的二叉树。对于这道题,我的思路是这样的:

1、建立二叉树的结点,用结构体数据类型表示;
2、根据前序遍历的规则组建二叉树–用递归的方式完成二叉树的组建过程,其中传入的是结点所在位置的指针。
3、同样方式,用中序遍历和后序遍历输出结点排序。

详细叙述见下分析:
1、首先定义一个结构体,里面的数据包括二叉树每个结点的数据值,和指向左右结点的指针。定义这个数据结构体是为后面建立二叉树左准备:

typedef struct BiTNode
{
    ElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;//这里的BiTNode==*BiTree

2、二叉树结点已经建立了,下面我们需要做的就是把这些结点连接起来,生成一个特定的二叉树,下面根据本题所给条件,以先序遍历的方式,输入本题的二叉树序列,从而生成如图二叉树。这里注意使用的生成方式是递归生成二叉树,也就是把每个结点的左右指针连接到特定结点上,直至结束。
注意:因为只根据先序遍历一种方式建立二叉树,为了保证二叉树的唯一性空缺子叶用空格符号代替


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值