首页 > 编程知识 正文

树与二叉树遍历对应,二叉树遍历怎么理解

时间:2023-05-04 07:46:32 阅读:154819 作者:991

1 .导线测量概述:

树作为非线性数据结构,需要我们在提取数据时设计遍历。 扫描是指按照一定的规律性依次访问数据结构中的所有数据,由于二叉树本身并不具有天然的全局顺序,为了实现扫描,通过在各节点与其子节点之间约定某种局部顺序,间接地从某种角度出发这就是我们经常规定的先后顺序、中顺序和后续扫描。

开始之前,请记住以下三个词。

顺序扫描:根左右

中顺序扫描:左根右

后遍历:左右根

2 .第一次遍历:

预读遍历是访问二叉树节点时采用的先将路径向左再向右移动的方式,在最简单的访问中,如图所示,预读的访问顺序为a、b、c

但是,实际的遍历访问并不简单,多数情况下,是多个节点嵌套构成的二叉树。

如图所示,当访问扫描首先访问根节点a,然后访问左节点b时,由于左节点嵌套了一系列节点,左节点又是下一个节点的根节点,所以继续沿b访问d,同样d包含新节点

从这里可以看出,存在该二叉树最初扫描访问顺序为ABDEFGCH的访问规则

3 .代码实现

继续上述代码,实现超前遍历的思路非常简单,只要巧用“递归”就可以了。 //树中的第一个遍历Preordertraversal

voidpreorder(node*node ) {

if (节点!=NULL )

{

printf('%d ',node-data );

节点(node-left );

节点(node-right );

}

}

4 .扩展:前缀表达式(波兰表达式)

波兰式也叫前缀式,我们的日常运算式通常是以下形式,这就是骑马订式,运算符介于运算数之间。 这个公式很容易被人识别,在此基础上进行计算,但是计算机识别这个公式非常困难。

如图所示,正则表达式: (a b ) ) c

二叉树的表现形式如下

另一方面,波兰式的表达方式是* cab。 波兰式的特征之一是符号迁移。 通常的表达需要使用很多括号来表达优先级,但不需要这样的波兰表达式,容易让计算机处理。 我们通常的表达计算是中序的,但是计算机容易理解波兰式这样的方式,进行这样的变换需要首先变换思路。 代码中为了实现这样的变换一般是利用堆栈,这样的变换需要在熟练的书中进行

5 .相关习题

请回答

l这棵树的第一次横移是多少?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。