Code前端首页关于Code前端联系我们

树遍历 二叉树的中序遍历 C 语言示例代码

terry 2年前 (2023-09-27) 阅读数 69 #数据结构与算法

1。简介

继续下面三句话:

前序遍历:根左右

中序遍历:左根右

后序根转移 上面我们遇到了前序遍历:顺序遍历。在这篇文章中,我们就按顺序开始学习复习。顺序遍历采用左根右遍历。如图是最容易的。对于二叉树遍历来说,按顺序遍历的过程是先B,再A,再C。

树的遍历之中序遍历二叉树,C语言示例代码

实际的二叉树没那么简单。它必须由多个节点组成。如图表示,当我们第一次访问时,我们穿过ABC,按照左根和右根的顺序,我们穿过B。现在不用担心。 B也是BDG的根节点,所以我们必须继续向下遍历。此时我们转到DEF,E就属于它。左节点在一个组中,所以我们按照根和左的顺序得到第一个遍历效果,EDF。这个EDF也被用作BDG中的左节点(将EDF视为一个整体)进行回溯。此时,访问节点的顺序为EDFBG。类似地,EDFBG是ABC的左节点。按照左根右根的顺序,EDFBGAC,先打开左半部分,再打开右半部分。我们将^CH(^表示空)视为Left Center Right的集合,而C由EDFBGAC组成,所以最终的遍历顺序为:EDFBGACH

树的遍历之中序遍历二叉树,C语言示例代码

2。代码实现

继续上面的代码,使用智能递归,与之前的代码只有一个顺序。区别:

//树的顺序遍历void ❀inorder Node*节点){ if (node​​!= NULL) de->left); printf ("%d ",node->data ;通用表达式算术或逻辑公式的方法。中缀表达式是也是我们最常用的表达方式,也是最容易让人理解的表达方式。

如图 是一个正则表达式: (a+b)*c

其二叉树表达式为: 树的遍历之中序遍历二叉树,C语言示例代码

从上面我们可以看到波兰语表达式是 *+cab,我们的正则表达式公式计算按顺序进行,其表达式为(a+b)*c。我们可以将其理解为将表达式转换为二叉树,然后通过按顺序遍历来提取。如果必须出现组合,我们必须使用括号的形式表示优先级。这也有一个缺点,就是做更多的对冲时需要更多的括号。

树的遍历之中序遍历二叉树,C语言示例代码

请回答这棵树按什么顺序遍历?

树的遍历之中序遍历二叉树,C语言示例代码

l 请回答此时二叉树的有序遍历是怎样的?

l 请回答 ((a+b)+(c+d))*e 作为带有中缀表达式的二叉树,并用图解表示。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门