美剧去哪看|深度阅读: 大学生必需要搞懂的数据结构, 15张图来了解【树】( 二 )
本文插图
遍历 , 显示树
代码如下:
本文插图
树的遍历之先序遍历二叉树
遍历简介
遍历是按照一定的规则性 , 将数据结构中的所有数据全部依次访问 , 而二叉树需要通过在各节点与其孩子之间商定某种局部次序 , 间接地定义某种全局次序 。
先序遍历:根左右
先序遍历:
先序遍历就是在访问二叉树的结点的时候采用 , 先根 , 再左 , 再右的方式 , 对于一个最简朴的访问而言如下图 , 先序遍历的访问顺序就是A , B , C
本文插图
多个结点相互嵌套构成的二叉树如图所示 , 在访问遍历一开始的时候 , 先访问根结点A , 次访问左节点B , 因为左结点中嵌套了一组结点 , 因此左节点又作为下一个结点的根结点 。
继承沿着B访问到了D , 同样因为D中包含了一组新的结点 , D又作为根节点继承访问 , 就又访问到了E , 因为E没有后面的结点了 , 作为D为根的左结点E访问结束后 , 访问到F , 这一组访问结束之后再回退访问G , 那么这一个二叉树的先序遍历访问顺序就是:ABDEFGCH
本文插图
代码实现
本文插图
扩展->前缀表达式
我们日常的运算表达式通常是如下形式 , 这种成为中缀表达式 , 也就是运算符在运算数的中间 , 如图 , 为常规表达式:(a+b)*c
其二叉树的表现形式为:
本文插图
而前缀表达式的表达方式就是 *+cab, 它的一个特征就是符号迁移 , 常规的表达式是需要大量的括号表达先后顺序的 , 而这样的表达式表达形式不需要 , 更轻易让计算机处理 。
我们常规的表达式的计算是中序的 , 而计算机更利便对前缀表达式这样的方式进行理解 , 进行这样的转换首先思路要进行转换 。
在代码中我们实现这样的转换一般可以利用栈 , 纯熟书些这样的转换就需要STL的把握 。
树的遍历之中序遍历二叉树
简介
中序遍历:左根右
如下图 , 就一个最简朴的二叉树遍历而言 , 中序遍历的遍历访问过程是先B再A再C 。
本文插图
多个结点构成的如图所示 , 进行第一次访问的时候 , 我们在ABC中进行遍历 , 由左根右的顺序 , 我们遍历访问到B , B同时又作为BDG的根结点 , 因此需要继承向下进行遍历 。
此时我们遍历到DEF , 这时E属于这一组之中的左结点 , 因此我们根据根左右的先后顺序得到了最先的遍历效果 , EDF 。
这EDF同时作为BDG中的左节点(把EDF看作一个整体)进行回溯 , 此时的访问的结点顺序为EDFBG 。
同理EDFBG作为ABC的左结点根据左根右的顺序EDFBGAC , 左半部门访问完毕接着访问右半部门 , 我们将^CH(^表示空)看作一组左中右 , 而C就是由EDFBGAC组合而成 , 因此终极的遍历顺序为:EDFBGACH
本文插图
代码实现
本文插图
中缀表达式(常规算式)
中缀表达式是一个通用的算术或逻辑公式表示方法 。 中缀表达式就是我们最常用的表达式形式 , 也是人最轻易理解的表达式形式 。
【美剧去哪看|深度阅读: 大学生必需要搞懂的数据结构, 15张图来了解【树】】如图 , 为常规表达式:(a+b)*c
其二叉树的表现形式为:
本文插图
由前文可知前缀表达式的表达方式就是 *+cab, 我们常规的表达式的计算是中序的 , 其表达式就是(a+b)*c 。
我们可以理解为将表达式利用二叉树化 , 然后通过中序遍历的方式进行提取 , 假如需要发生组合时 , 需要我们借助括号的形式表示优先级 , 这样也有一个弊端 , 就是当多个嵌套的时候需要的括号较多 。
树的遍历之后序遍历二叉树
简介
后序遍历:左右根
后序遍历就是在访问二叉树的结点的时候采用 , 先左 , 再右 , 再根的方式 , 对于一个最简朴的访问而言如图 , 先访问左节点B , 之后访问右结点C , 最后访问根节点A , 后序遍历的访问顺序就是BCA
推荐阅读
- 美剧去哪看|山东寿光:市教体局组织开展党性教育培训流动
- 美剧去哪看|想要报考一些军事类大学, 应该怎么办?
- 附近海域,深度|菲律宾棉兰老岛附近海域发生5.7级地震 震源深度40千米
- 央视|菲律宾南部发生6.0级地震 震源深度33公里
- 晨财经|一周机构去哪儿?博时基金、高瓴资本等调研了这些个股
- 美剧去哪看|1957年,一位老人信用社入股6元,如今到银行兑换,值多少钱?
- 去哪玩|聚焦首届创客峰会论坛④丨创客灵魂拷问:公司被相中,卖仍是不卖?
- 大众报业·海报新闻|鲁能十宗“最”(二):最悲催的外援 鲁能4号的优良传统去哪儿了?
- 南方都市报|中科院心理所第五届心理学应用论坛聚焦与智能产业深度结合
- 红星新闻|5G赋能影视城深度工业化,象山影视城要从1.0升级到2.0
