二叉树的前序中序和后续遍历及应用场景

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的前序中序和后续遍历及应用场景相关的知识,希望对你有一定的参考价值。

参考技术A 二叉树遍历的应用:

(1)前序遍历:可以用来实现目录结构的显示。

(2)中序遍历:可以用来做表达式树,在编译器底层实现的时候用户可以实现基本的加减乘除,比如 a*b+c。

(3)后序遍历可以用来实现计算目录内的文件占用的数据大小~非常有用。

表达式求值也可以使用后缀表达式。后缀表达式求值比中缀表达式更方便,可以先把中缀表达式变成后缀表达式,然后再根据后缀表达式求值。

1.对于前序遍历,可以用来实现输出某个文件夹下所有文件名称(可以有子文件夹),就是目录结构的显示。

输出文件名称的过程如下:

如果是文件夹,先输出文件夹名,然后再依次输出该文件夹下的所有文件(包括子文件夹),如果有子文件夹,则再进入该子文件夹,输出该子文件夹下的所有文件名。这是一个典型的先序遍历过程。

2.对于前序遍历,可以用来统计某个文件夹的大小(该文件夹下所有文件的大小)

统计文件夹的大小过程如下:

若要知道某文件夹的大小,必须先知道该文件夹下所有文件的大小,如果有子文件夹,若要知道该子文件夹大小,必须先知道子文件夹所有文件的大小。这是一个典型的后序遍历过程。

学以致用,知道一个算法的用途才可以更好的学习他,更愿意深入学习这个算法。

参考:
(1) https://blog.csdn.net/wayne566/article/details/79106372

怎么根据二叉树的前序,中序,确定它的后序

怎么根据二叉树的前序,中序,确定它的后序
二叉树遍历分为三类:前序遍历,中序遍历和后序遍历。
前序遍历:先访问根节点,然后遍历左子树,最后遍历右子树;并且在遍历左,右子树时,仍需先访问根节点,然后遍历左子树,最后遍历右子树。
中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树;并且在遍历左,右子树时,仍先历左子树,然后访问根节点,最后遍历右子树。
后序遍历:先遍历左子树,然后遍历右子树,最后访问根节点;并且在遍历左,右子树时,仍先历左子树,然后遍历右子树,最后访问根节点。
由中序和后序可以知道B,C,D,E是左子树,H,F,G是右子树,A是根节点。因为后序遍历最后访问的是根节点。在左子树中C是D和B的子节点,E是C的子节点,在右子树中H是G和F的子节点,
A是根节点。最后可以推出前序序列是:AECDBHGF
参考技术A 可以。但是只有前后求中就不行。用递归去算吧。二分。例如
前:abcdfe
中:badfce

a
/
\
b
c
/
\
d
e
\
f
这时,先拿到前序的a,a必定是这棵树的根,然后在中序中找到a,把a前a后的分为2部分,即b和dfce;然后按照1:4将前序剩余部分分开,得到b和cdfe;然后分别递归;因为是求后序,所以在两边递归完了再输出本子树的根。

以上是关于二叉树的前序中序和后续遍历及应用场景的主要内容,如果未能解决你的问题,请参考以下文章

二叉树遍历问题(前序,中序,后序)

java实现线索化二叉树的前序中序后续的遍历(完整代码)

二叉树的递归遍历(先序中序和后序)

已知二叉树的中序序列和后序序列,怎么求前序序列

小白学算法8.二叉树的遍历,前序中序和后序

LeetCode106. Construct Binary Tree from Inorder and Postorder Traversal-通过中序和后续遍历还原二叉树