二叉树:层次遍历算法(自上而下,从左到右)

article/2025/9/18 21:31:02

层次遍历(LevelOrder)就是默认为自上而下,从左到右,一层一层进行遍历
层次遍历需要借助队列来完成,
队列:先进先出(FIFO

分析:如图有一棵二叉树,按照层次遍历最终的结果就是ABCDEFG,首先将根结点A入队列。
在这里插入图片描述
然后根结点出队,并访问A结点,发现A结点既有左孩子也有右孩子,那么就分别将左右孩子入队,此时队列中有BC。
在这里插入图片描述
A的左右孩子都入队了,然后将队头结点B出队并访问,此时序列为AB,B有左右孩子,所以将B的左右孩子DE入队,队中此时有CDE。在这里插入图片描述
然后队头结点C出队并访问,C有左右孩子,所以将C的左右孩子FG入队。此时队列里有DEFG。
在这里插入图片描述
然后队头结点D出队并访问,D没有左右孩子,所以没有可入队的结点。
继续让队头结点E出队并访问,E没有左右孩子,所以没有可入队的结点。
FG同理,此时队列为空,结束。最终层次遍历序列为:ABCDEFG。
在这里插入图片描述

算法思想:层次遍历使用一个队列(先进先出),将根结点入队,出队,然后访问出队结点,若它有左孩子,就将左孩子入队,若它有右孩子,就将右孩子入队,然后访问队头结点,如此循环下去,直到队列为空,就结束了。
代码

void LevelOrder(BiTree T){  // 全篇❤InitQueue(Q); // 初始化队列Q,队列通常用Q表示,栈用S表示BiTree *p;EnQueue(Q,T); // 将根结点入队while(!IsEmpty(Q)){ // 队列不为空则进入循环DeQueue(Q,p);  // 出队,即将队头结点出队,因为队列先进先出visit(p);  // 并访问,即加入到最终遍历序列中if(p->lchild!=NULL)  // 如果有左孩子EnQueue(Q,p->lchild);  // 就将左孩子入队if(p->rchild!=NULL)  // 如果有右孩子EnQueue(Q,p->rchild);  // 就将右孩子入队}
}

注解
在这里插入图片描述


http://chatgpt.dhexx.cn/article/hVvT8kA1.shtml

相关文章

MATLAB符号运算——微分

微分 微分在数学中的定义:由函数Bf(A),得到A、B两个数集,在A中当dx靠近自己时,函数在dx处的极限叫作函数在dx处的微分,微分的中心思想是无穷分割。 在MATLAB中计算微分 函数:diff 调用格式: …

matlab中常用符号

在使用MATLAB的过程中,经常需要对输出图形中的变量进行标注,其中经常遇到的难题就是如何标注各种上标、下标、斜体、黑体、箭头、上圆圈、正负号等特殊符号,以及如何标注特殊的数学符号。这里第一机电网给大家总结一下,希望对大家…

MATLAB符号运算(七)

目录 1、实验目的: 2、实验内容: 1、实验目的: 1)掌握定义符号对象和创建符号表达式的方法; 2)掌握符号运算基本命令和规则; 3)掌握符号表达式的运算法则以及符号矩阵运算&#xf…

MATLAB符号运算小技巧

1. 引言 MATLAB具备强大的符号运算功能。符号运算就是所谓的计算机代数,通俗的说就是利用计算机进行数学公式的推导。这篇文章主要总结几个MATLAB进行符号运算时的小技巧,这也是作者在进行技术研究过程中实际碰到的一些难题,希望后来者能少走…

Matlab-运算符

运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。MATLAB主要用于整个矩阵和阵列的操作。因此,MATLAB中的运算符既可用于标量数据也可用于非标量数据。MATLAB允许以下类型的基本操作 算术运算符 关系运算符 逻辑运算符 按位运算符 集合运算符…

matlab常见符号运算(计算导数,积分、符号求和等))

符号运算的建立 sym 函数用来建立单个符号量,一般调用格式为: 符号变量 sym(A) 参数 A 可以是一个数或数值矩阵,也可以是字符串 syms 命令用来建立多个符号量,一般调用格式为: syms 符号变量1 符号变量2 … 符号变量…

MATLAB符号变量的创建和简单运算

声明:本文章中数据来自清风老师数学建模课程 文章目录 MATLAB符号变量的创建和简单运算1、符号变量1. 1 符号变量的创建1.2 符号方程的创建3 符号矩阵的创建 2、符号运算2.1 简单运算2.2 表达式的整理2.3 因式分解2.4 多项式展开2.5 合并2.6 计算分子与分母2.7 让结…

第十一章:MATLAB:符号运算(符号与数值,符号矩阵)

第十一章:MATLAB符号运算 11.1. 符号与数值11.1.1. 符号与数值间的转换实例-数值与符号转换 11.1.2. 符号表达式与数值表达式的精度设置实例-魔方矩阵的数值解实例-稀疏矩阵的数值解实例-伴随矩阵的数值解实例-托普利兹矩阵的数值解 11.2. 符号矩阵11.2.1. 符号矩阵…

MATLAB的符号运算基础

在数学运算中,运算的结果如果是一个数值,可以称这类运算为数值运算;如果运算结果为表达式,在MATLAB中称为符号运算,符号计算是对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。MATLAB具有符号数学工具箱…

MATLAB符号运算——积分

积分 积分是微积分学与数学分析里的一个核心概念。通常分为定积分和不定积分两种。直观地说,对于一个给定的正实值函数,在一个实数区间上的定积分可以理解为在坐标平面上,由曲线、直线以及轴围成的曲边梯形的面积值(一种确定的实…

MATLAB的符号计算

MATLAB的符号计算 matlab的符号计算是通过sym、syms 函数去创建符号对象或者符号表达式。例如一元二次函数我们便可以通过syms 函数创建。 syms a b c x y z f1 a * x^2 b * x c; f2 sin(x) * cos(y); f3 (x y)/z; 符号表达式常用运算函数 函数名说明函数名说明facto…

matlab中的符号对象与符号运算

符号对象(Symbolic Objects 不同于普通的数值计算)是Matlab中的一种特殊数据类型,它可以用来表示符号变量、表达式以及矩阵,利用符号对象能够在不考虑符号所对应的具体数值的情况下能够进行代数分析和符号计算(symbolic math operations),例如…

Matlab系列之符号运算(上)

Matlab系列之符号运算 前言创建符号对象基本操作符号变量的基本操作符号表达式的基本操作四则运算多项式的操作符号表达式化简符号表达式的替换反函数求解复合函数 更多精彩等你发现~ 前言 看到文章的名字,可能很多人都没懂意思,如果叫它的另一个名字&a…

MATLAB学习之符号运算

创建符号变量数值与符号的转换数值矩阵转换为符号矩阵符号替换 本文介绍MATLAB中的符号运算; 1. 创建符号变量 符号常量是不含变量的符号表达式,用 sym 命令来创建符号常量。 sym(‘常量’):创建符号常量。 asym(sin(2)) sym 命令也可以把…

MATLAB08:符号运算

pdf版本笔记的下载地址: MATLAB08_符号运算(访问密码:3834) MATLAB08:符号运算 创建符号变量创建符号数字创建符号变量 符号运算符号表达式的化简与代入符号表达式的化简符号表达式的代入 求方程的解析解解单变量方程解多变量方程解方程组 符…

MATLAB基础(三)符号运算

符号对象的建立 符号对象的建立:sym 和 syms sym 函数用来建立单个符号变量,一般调用格式为:符号变量 sym(A) 参数 A 可以是一个数或数值矩阵,也可以是字符串 例如:asym(a) a 是符号变量 bsym(1/3) …

MATLAB符号运算部分知识总结

1. 符号表达式的定义 1.1符号变量的定义 符号变量通过命令syms和sym定义,syms命令一次定义一个或多个符号变量,sym命令一次只能定义一个符号变量。定义好的符号函数可以通过命令symvar检查其自变量。 MATLAB系统有默认的符号自变量,主要为&am…

[MATLAB]符号计算

符号计算 一、数值微积分1.1 数值计算与符号计算的区别1.2 符号对象1.3 符号常量1.4 符号变量1.4.1 符号变量的创建1.4.2 创建符号矩阵1.4.3 自由符号变量 1.5 符号表达式1.6 符号计算的运算符1.7 符号运算中的函数运算1.8 符号计算与数值计算的区别 二、符号数字及表达式2.1 数…

MATLAB符号运算

在数学、物理学及力学等各种学科和工程应用中,经常还会遇到符号运算的问题。在MATLAB中,符号运算是为了得到更高精度的数值解,但数值的运算更容易让读者理解,因此在特定的情况下,分别使用符号或数值表达式进行不同的运…

matlab 运算符

1、字符串 字符串是用单引号来标示的,例如:SI Have a Dream.,赋值号之后在单引号内的字符即是一个字符串,而S是一个字符串变量。 2、运算符 MATLAB 运算符分为算术运算符、关系运算符和逻辑运算符。 1、算术运算符 矩阵算术运算符 运算符…