二叉树的先中后序遍历

news2024/11/28 6:41:25

什么是遍历呢?

遍历:按照某种次序把所有结点都访问一遍

先/中/后序遍历:基于树的递归特性确定的次序规则


二叉树的递归特性:

①要么是个空二叉树
②要么就是由“根节点+左子树+右子树”组成的二叉树

先序遍历:根左右(NLR)  ——先访问根结点,在访问左子树,最后访问右子树
中序遍历:左根右(LNR)  ——先访问左子树,在访问根结点,左后放稳右子树
后序遍历:左右根(LRN)    ——先访问左子树,在访问右子树,最后访问根节点

例如:

先序遍历:AB DECFG
中序遍历:DB EAFC G

后序遍历:DEBFGCA

EX1:

1.先序遍历代码实现:

先序遍历(PreOrder)的操作过程如下:
1.若二叉树为空,则什么也不做;

2.若二叉树非空:

①访问根结点;②先序遍历左子树;③先序遍历右子树。

代码实现:

typedef struct BiTNode{
ElemType data;
struct BiTNode*lchild,*rchild;
}BiTNode,*BiTree;


//先序遍历
void Pre0rder(BiTree T){
    if(T!=NULL){
       visit(T);          //访问根结点
       Pre0rder(T->lchild);      //递归遍历左子树
       Pre0rder(T->rchild) ;    //递归遍历右子树
    }
}

2.中序遍历代码实现:

中序遍历(lnOrder)的操作过程如下:

1.若二叉树为空,则什么也不做;

2.若二叉树非空:
①先序遍历左子树;②访问根结点;③先序遍历右子树。

typedef struct BiTNode{
ElemType data;
struct BiTNode*lchild,*rchild;
}BiTNode,*BiTree;


//中序遍历
void In0rder(BiTree T){
    if(T!=NULL){
       In0rder(T->lchild) ;       //递归遍历左子树
       visit(T);                 //访问根结点
       InOrder(T->rchild) ;      //递归遍历右
    }
}

 

 

3.后序遍历:
后序遍历( InOrder)的操作过程如下:

1.若二叉树为空,则什么也不做;

2.若二叉树非空:①先序遍历左子树;②先序遍历右子树;③访问根结点。


 

 

 4.求树的深度:

int treeDepth(BiTree T){
    if (T == NULL){
       return 0;
}
    else {
       int l = treeDepth(T->lchild) ;
       int r = treeDepth(T->rchild);
       //树的深度=Max(左子树深度,右子树深度)+1
       return l>r ? l+1 : r+1;
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音小店新店铺起飞式玩法,这几步一定要做好,前期很重要

大家好,我是电商笨笨熊 进入抖音小店后不知道该怎么操作,不清楚如何让新店快速起店; 今天我们就来聊聊新店铺快速起店的几个关键步骤,新手玩家一定要按照流程去做。 第一步:店铺搭建 小店开通之后不要着急选品上架&…

FreeRTOS_day1

1.总结keil5下载代码和编译代码需要注意的事项 下载代码前要对仿真进行设置 勾选后代码会立刻执行 勾选后会导致代码不能执行 写代码的时候要写在对应的begin和end之间,否则会被覆盖 2.总结STM32Cubemx的使用方法和需要注意的事项 ①打开软件,新建工程…

项目7-音乐播放器2(上传音乐+查询音乐+拦截器)

0.加入拦截器 之后就不用对用户是否登录进行判断了 0.1 定义拦截器 0.2 注册拦截器 生效 1.上传音乐的接口设计 请求: { post, /music/upload {singer,MultipartFile file}, } 响应: { "status": 0, "message&…

【Android】Activity task和Instrumentation杂谈

文章目录 activity taskInstrumentation机制参考 Android不仅可以装载众多的系统组件,还可以将它们跨进程组成ActivityTask,这个特性使得每个应用都不是孤立的。 activity task 从数据结构角度看,Task有先后之分,源码实现上采取了…

AI人工智能老师大模型讲师叶梓 OneLLM:开创性的多模态大型语言模型技术

在人工智能领域,多模态大型语言模型(MLLM)的研究一直是一个热门话题。近期,一种名为OneLLM的创新技术引起了业界的广泛关注。OneLLM通过其独特的统一框架,实现了多种不同模态与自然语言的高效对齐,为多模态…

加拿大银行入局,强化数字货币的量子安全防护

领先的量子网络安全公司EvolutionQ此前宣布与加拿大银行签订合同,为加拿大银行的一个研究项目做出贡献,该项目涉及绿地数字货币的量子安全网络安全技术。这项工作强调了EvolutionQ致力于理解量子计算机对新兴金融技术(如数字货币)…

社区养老服务系统|基于springboot社区养老服务系统设计与实现(源码+数据库+文档)

社区养老服务系统目录 目录 基于springboot社区养老服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员部分功能 (1) 用户管理 (2)服务种类管理 (3)社区服务管理 &#xff08…

怎样编写测试团队通用的JMeter脚本

1、确定测试目标和场景: 与团队成员共同明确测试的目标,例如性能评估、负载测试、稳定性测试等。 确定要测试的具体业务场景和使用案例,比如用户登录、搜索功能、购物流程等。 2、学习 JMeter 工具和基础知识: 阅读 JMeter 官…

JS -a标签和this在DOM的使用、使用DOM完成点击按钮操作div块和获取div块的CSS样式

a标签的索引问题和this <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthde…

QT 串口助手 学习制作记录

QT 串口助手qt 学习制作记录 参考教程&#xff1a;​​​​​​QT初体验&#xff1a;手把手带你写一个自己的串口助手_qt设计串口助手的流程图-CSDN博客 Qt之串口编程&#xff08;添加QSerialPort模块&#xff09;_如何安装 qt串口模块教程-CSDN博客 串口调试助手&#xff1…

聚道云软件连接器助力医疗器械有限公司打通金蝶云星辰与飞书

摘要 聚道云软件连接器成功将金蝶云星辰与飞书实现无缝对接&#xff0c;为某医疗器械有限公司解决采购订单、付款单同步、审批结果回传、报错推送等难题&#xff0c;实现数字化转型升级。 客户介绍 某医疗器械有限公司是一家集研发、生产、销售为一体的综合性医疗器械企业。…

揭秘AI精准输出:如何构建完美的AIGC提示词?

揭秘AI精准输出&#xff1a;如何构建完美的AIGC提示词&#xff1f;&#x1f916; 文章目录 揭秘AI精准输出&#xff1a;如何构建完美的AIGC提示词&#xff1f;&#x1f916;摘要引言正文&#x1f4d8; 提示词的基本概念1. 什么是提示词&#xff1f;2. 提示词的作用 &#x1f4d…

锁策略^o^

锁策略 一&#xff0c;悲观锁 VS 乐观锁 悲观锁&#xff1a;总是假设最坏的情况&#xff0c;每次去拿数据的时候都认为别人会修改&#xff0c;所以每次在拿数据的时候都会碰上锁&#xff0c;这样别人想拿这个数据就会阻塞&#xff0c;直到它拿到锁。 乐观锁&#xff1a;假设…

如何理解服务器的硬防和软防

关于服务器防御相关的知识很多新手都不是很了解&#xff0c;服务器防御分为服务器硬防和软防。 一、服务器硬防 服务器硬防主要指的是硬件防火墙&#xff0c;能够在硬件设备中嵌入防火墙的防御程序&#xff0c;是一种专门用来保护网络不受未授权访问所设计的设备&#xff0c;硬…

保护你的数据隐私!新技术将实现绝对安全的「量子云计算」

听说过物质-光子混合实现可验证的盲量子计算&#xff08;blind quantum computing&#xff09;吗&#xff1f; "盲量子计算"是一种使用户能够远程利用量子计算服务商的量子设备执行计算的模式。这一技术可能使数百万个人和企业安全地接入下一代量子计算机&#xff0c…

Big Data and Cognitive Computing (IF=3.7) 计算机/大数据/人工智能期刊投稿

Special Issue: Artificial Cognitive Systems for Computer Vision 欢迎计算机/大数据/人工智能/计算机视觉相关工作的投稿&#xff01; 影响因子3.7&#xff0c;截止时间2024年12月31日 投稿咨询&#xff1a;lqyan18fudan.edu.cn 投稿网址&#xff1a;https://www.mdpi.com/j…

负荷预测 | Matlab基于TCN-GRU-Attention单变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-GRU-Attention单变量时间序列多步预测&#xff1b; 2.单变量时间序列数据集&#xff0c;采用前12个时刻预测未来96个时刻的数据&#xff1b; 3.excel数据方便替换&#xff0c;运行环境matlab2023及以…

创纪录的里程碑!光镊阵列捕获逾6,000中性原子,量子计算再达新高

论文链接&#xff1a; https://arxiv.org/abs/2403.12021 2024年3月18日&#xff0c;研究人员成功开发出一种大规模光镊阵列&#xff0c;能够在12,000个位点上捕获超过6,100个中性原子&#xff0c;同时在几个关键性能指标上达到新的高度&#xff1a; 1&#xff09;相干时间达到…

智慧公厕解决方案易集成好使用的智能硬件

在现代城市建设中&#xff0c;智慧公厕的需求日益增长。为了提供更好的用户体验和更高效的管理&#xff0c;易集成、好使用的智能硬件成为智慧公厕解决方案的关键组成部分。 1. 蹲位有人无人感应器&#xff1a;是用于检测厕位有人无人的设备&#xff0c;根据现场不同的安装条件…

BTI功能验证与异常解析

BTI分支目标识别精讲与实践系列 思考 1、什么是代码重用攻击&#xff1f;什么是ROP攻击&#xff1f;区别与联系&#xff1f; 2、什么是JOP攻击&#xff1f;间接分支跳转指令&#xff1f; 3、JOP攻击的缓解技术&#xff1f;控制流完整性保护&#xff1f; 4、BTI下的JOP如何…