1 / 19

数据结构 第六章 树和二叉树

数据结构 第六章 树和二叉树. 第三节 遍历二叉树 制作人:高均均 20031014029. 1. 复习. 上节课我们说了树 , 二叉树的定义 , 二叉树的五个重要的性质等 . 树型结构是一类重要的非线形结构 . 其中属树和二叉树的应用最为广泛 . 1. 树的定义 树 (Tree) 是 N 个结点的有限集 (N≥0). 当 N=0 时是一个空树 . 当 N>0 时 , 树有两个重要的性质 : (1) 有且仅有一个特定的结点称为根的结点 .

kasi
Télécharger la présentation

数据结构 第六章 树和二叉树

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据结构第六章 树和二叉树 第三节 遍历二叉树 制作人:高均均 20031014029

  2. 1.复习 上节课我们说了树,二叉树的定义,二叉树的五个重要的性质等.树型结构是一类重要的非线形结构.其中属树和二叉树的应用最为广泛. 1.树的定义 树(Tree)是N个结点的有限集(N≥0). 当N=0时是一个空树. 当N>0时,树有两个重要的性质: (1)有且仅有一个特定的结点称为根的结点. (2)当N>1,其余结点可以分为了若干个有限集(T1,T2,T3……Tm),其中每个集合本身又是一棵树,并且称为根的子树.

  3. 树的基本术语 • 树的结点:包含一个数据元素及若干指向其子树的分支。 • 结点的度:结点拥有的子树数称为结点的度。 • 叶 子:度为0的结点,又称终端结点。 • 分支结点:度不为0的结点,又称非终端结点。 • 树的度:树内各结点度的最大值。 • 结点孩子:结点的子树的根称为该结点的孩子。 • 孩子双亲:[由结点孩子]定义知,该结点称为孩子的双亲。 • 兄弟结点:同一个双亲的孩子间互称兄弟。 • 结点祖先:从根到该结点所经分支上的所有结点。 • 子 孙:以某结点为根的子树中任意结点称为子孙。

  4. 2.二叉树的定义 二叉树是一类特殊的树. (1)二叉树中的每个结点至多只有两棵子树,即二叉树中不存在度大于二的接点. (2)二叉树的由三个基本单元构成:根结点,左子树,右子树. (3)二叉树的左右子树有次序之分,顺序不能颠倒. 二叉树的基本形态:

  5. 二叉树的遍历 1.问题的提出: 在二叉树的一些应用中,为了在树中查找具有某种特征的结点,或者对树中的全部结点逐一进行处理。这样就提出了一个遍历二叉树的问题,即如何按某条搜索路径寻访树中的每个结点,使得每个结点均被访问一次,而且仅被访问一次。“访问”的含义很广,可以是对结点进行处理,如输出结点的信息等等。 因此对二叉树而言:可以有三条搜索路径: (1)先上后下的按层次搜索 (2)先左子树,后右子树的遍历 (3)先左子树,后右子树的遍历

  6. 回顾二叉树的递归定义可知:二叉树有三个基本形态:根结点,左子树,右子树。因此,若能依次遍历这三部分,便是遍历了整个二叉树,假如以L,D,R分别表示遍历左子树,访问根结点,遍历右子树则有DLR,DRL,LDR,RDL,LRD,RLD。回顾二叉树的递归定义可知:二叉树有三个基本形态:根结点,左子树,右子树。因此,若能依次遍历这三部分,便是遍历了整个二叉树,假如以L,D,R分别表示遍历左子树,访问根结点,遍历右子树则有DLR,DRL,LDR,RDL,LRD,RLD。 • 若限定先左后右,则只有三种情况:RLD,LDR,LRD。 • 也是我们的先序遍历二叉树,中序遍历二叉树,后序遍历二叉树

  7. “中序”和“后序”中的”中”和”后”都是指访问根结点的先后次序,顾名思义,中序遍历就是中间遍历的是根结点,后序遍历就是最后遍历根结点.但左子树总是默认在右子树之前遍历.

  8. 2.二叉树的遍历 1先序遍历二叉树 • 操作定义: • 若二叉树为空,则遍历结束,否则按顺序遍历 • (1)访问根结点, • (2)遍历左子树, • (3)遍历右子树。

  9. 1 先序遍历二叉树: 1.从根结点开始遍历 2.访问1的左孩子 3.访问2的左孩子 4.访问1的右孩子 5.访问4的左孩子 6.访问4的右孩子 7.访问6的右孩子 4 2 3 5 6 7

  10. 分析: • 1.二叉树的先序遍历永远最先访问根结点. • 2.二叉树的先序遍历永远从根结点开始 • 3.对于每一个需要遍历的结点,遍历的顺序是: • (1)遍历该结点; • (2)遍历该结点的左孩子(若存在的话) • (3)遍历该结点的右孩子(若存在的话)

  11. 中序遍历二叉树 • 操作定义: • 若二叉树为空,则遍历结束,否则按顺序 • 遍历左子树, • 遍历右子树, • 访问 根结点。

  12. 分析: • 1.二叉树的中序遍历永远从根结点开始分析. • 2.二叉树的中序遍历永远从树的最左边开始. • 3.对于每一个需要遍历的结点,遍历的顺序是: • (1)遍历该结点的左孩子(若存在的话); • (2)遍历该结点; • (3)遍历该结点的右孩子(若存在的话).

  13. 中序遍历二叉树: 1.最左边开始遍历 2.访问1的父结点 3.访问2的父结点 4.访问3的右孩子的左孩子 5.访问4的父结点 6.访问5的右孩子 7.访问6的右孩子 3 5 2 1 4 6 7

  14. 后序遍历二叉树 • 操作定义: • 若二叉树为空,则遍历结束,否则按顺序 • 遍历左子树, • 访问 根结点, • 遍历右子树。

  15. 分析: • 1.二叉树的后序遍历永远最后访问根结点. • 2.二叉树的后序遍历永远从树的最左边开始. • 3.对于每一个需要遍历的结点,遍历的顺序是: • (1)遍历该结点的左孩子(若存在的话); • (2)遍历该结点的右孩子(若存在的话); (3)遍历该结点.

  16. 7 后序遍历二叉树: 1.最左边开始遍历 2.访问1的父结点 3.访问2的父结点的左孩子的左孩子 4.访问3的父结点的右孩子的右孩子 5.访问3的父结点的右孩子 6.访问3的父结点 7.最后访问根结点 6 2 1 3 5 4

  17. 例题: - + / 所示的二叉树表示下列表达式 a+b*(c-d)-e/f 若先序遍历此二叉树得 -+a*b-cd/ef 若中遍历此二叉树得a+b*c-d-e/f 若后序遍历此二叉树得abcd-*+ef/- a * f e b - c d

  18. 例题----------------A---------------- -------------------/----- \ ------------ ------------------B--------C------------ ----------------/--\----- /------------- --------------D--- E--- F-------------- ------------------------/--------------- -----------------------G---------------- -----------------------\---------------- ------------------------H---------------先看中序遍历,根节点是A,它的左子树的根节点是B,左子树的左子树是D,右子树是E。根据中序遍历的算法,先“左”后“中”最后“右”,所以A的左子树中序遍历的结果是DBE,既然整个树的左子树访问完了,当然就要访问整个树的根节点了,就是A;现在已经是DBEA了。现在开始看右子树,右子树C的左子树是F,C的右子树为空;再接着往左下找,F的左子树是G,F没有右子树;在往左下找,G没有左子树,那么G的左子树就不用访问了,直接写根节点G就可以了,再写G的右子树H,再逆着找回去,到F了,F的左子树已经访问完,所以接着写访问根节点F,没有右子树,再往上,就是C了。即:DBEAGHFC 再看后序遍历,依照后序遍历的法则,后序遍历左子树D ,后序遍历右子树E ,接着访问根结点B ,然后对于整个树来说先遍历右子树”CFGH”,对右子树来说又应该先从最低层遍历起,最低层无左分支,遍历右分支H,然后上溯到G,又无右分支,再上溯到F,然后是C,最后才遍历总的根结点A 即DEBHGFCA

  19. 作业 • 假定后序遍历二叉树的结果是A,C,B • (1)画出所有可能用得这一结果的不同形态的二叉树(2)分别写出这些二叉树的中序遍历序列?

More Related