数据结构-----二叉树的遍历

目录

一、二叉树的遍历有三种三种遍历方式:

二、给定二叉树的先序和中序,写出二叉树的后序

三、给定二叉树的中序遍历和后序遍历,写出先序遍历

一、二叉树的遍历有三种三种遍历方式:

1.前序遍历:根---->左---->右

2.中序遍历:左---->根---->右

3.后序遍历:左---->右---->根

例如:有一棵树如图所示:

数据结构-----二叉树的遍历_第1张图片

 前序遍历:A--->B--->C--->D--->E--->F--->G--->H--->K;

中序遍历:B--->D--->C--->A--->E--->H--->G--->K--->F;

后序遍历:D--->C--->B--->H--->K--->G--->F--->E--->A。 

二、给定二叉树的先序和中序,写出二叉树的后序

思路:先还原出这棵二叉树。

假设,二叉树的先序遍历为:ABDFCEGH,中序遍历结构为:BFDAGEHC

第一步,看先序遍历,由遍历顺序得,A为这棵树的根节点;

第二步,然后,可以确定的是BFD为A的左子树,GEHC为A的右子树,接下来就看左子树和右子                  树长什么样就行。

第三步,先看左子树,由先序遍历知,B为左子树的根节点。

              再看中序遍历,B的左边没有字母而右边有,可以确定B只有右子树;

              然后再看先序遍历,得D为B的右子树;

              最后看中序遍历,D的右边是A而A已经被选择了,D的左边只有F,所以D只有左子                树,且左子树为F。

              那么左子树就为:

数据结构-----二叉树的遍历_第2张图片

第四步 ,由先序遍历知,C为A的右子树;

第五步, 先看中序遍历,C的右边没有字母,左边有,说明C只有左子树;

第六步,再看先序遍历,可知E为C的左子树;

第七步,最后看中序遍历,E的左边为G,右边为H,说明G为E的左子树,H为E的右子树。

那么最后整个树还原后应该是这样的:

数据结构-----二叉树的遍历_第3张图片

后序遍历为:F--->D--->B--->G--->H--->E--->C--->A

三、给定二叉树的中序遍历和后序遍历,写出先序遍历

假设,二叉树的中序遍历为:DEBAC,后序遍历为:DABEC

第一步,先看后序遍历,可知C为这棵树的根节点;

第二步,再看中序遍历,可知这棵树只有左子树;

第三步,再看后序遍历,E在最后,则E为C的左子树;

第四步,然后看中序遍历,E的左边为D,E的右边为B,可以确定E的左子树为D,右子树为B;

第五步,最后看中序遍历,B的右边为A,则B的右子树为A。

最后这棵树还原后为:

数据结构-----二叉树的遍历_第4张图片

先序遍历为:C--->E--->D--->B--->A 

你可能感兴趣的:(数据结构)