二叉树中的前序、中序、后续遍历(C语言)

目录

  • 前序遍历
    • 概念
    • 代码
    • 递归分解图
  • 中序遍历
    • 概念
    • 代码
  • 后序遍历
    • 概念
    • 代码

前序遍历

概念

概念: 前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。
简单点来说就是:根 左子树 右子树的访问顺序
例如:
在这里插入图片描述
这颗二叉树使用前序遍历的结果为:1 2 3 N N N 4 5 N N 6 N N (N表示空)
在这里插入图片描述
始终记住,访问顺序为根 左子树 右子树

代码

节点的结构体

typedef int BTDateType;
typedef struct BinaryTreeNode
{
	BTDateType val;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;

在这里插入图片描述

void PrevOrder(BTNode* root)
{
	if (root == NULL)
	{
		printf("N ");
		return;
	}
	printf("%d ", root->val);
	PrevOrder(root->left);
	PrevOrder(root->right);
}

在这里插入图片描述

递归分解图

在这里插入图片描述

这里我只画了一部分,对递归不熟悉的话,可以根据以上的递归图,画出完整的递归图~

中序遍历

概念

概念:中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。
简单点来说就是:左子树 根 右子树的访问顺序
例如:
在这里插入图片描述
这颗二叉树使用中序遍历的结果为:N 3 N 2 N 1 N 5 N 4 N 6 N (N表示空)
在这里插入图片描述
始终记住,访问顺序为 左子树 根 右子树

代码

节点的结构体

typedef int BTDateType;
typedef struct BinaryTreeNode
{
	BTDateType val;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;

在这里插入图片描述

void InOreder(BTNode* root)
{
	if (root == NULL)
	{
		printf("N ");
		return;
	}
	InOreder(root->left);
	printf("%d ", root->val);
	InOreder(root->right);
}

在这里插入图片描述

后序遍历

概念

概念: 后序遍历(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。
简单点来说就是: 左子树 右子树 根的访问顺序
例如:
在这里插入图片描述
这颗二叉树使用后序遍历的结果为:N N 3 N 2 N N 5 N N 6 4 1 (N表示空)
在这里插入图片描述

始终记住,访问顺序为左子树 右子树 根

代码

节点的结构体

typedef int BTDateType;
typedef struct BinaryTreeNode
{
	BTDateType val;
	struct BinaryTreeNode* left;
	struct BinaryTreeNode* right;
}BTNode;

在这里插入图片描述

void BackOrder(BTNode* root)
{
	if (root == NULL)
	{
		printf("N ");
		return;
	}
	BackOrder(root->left);
	BackOrder(root->right);
	printf("%d ", root->val);
}

在这里插入图片描述
注意:由于被访问的结点必是某子树的根,所以N(Node)、L(Left subtree)和R(Right subtree)又可解释为根、根的左子树和根的右子树。NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2、图形验证码

1、图形验证码设计 1.1思路 现今,市面上的图形验证码付费的,免费的多种多样,主要形式有滑动拼图、文字点选、语序点选、字体识别、空间推理、智能随机等。 而处理也分为web端和sever端两部分 此处以免费的kaptcha 为例,进行数字图…

Vatee万腾平台:智能生活的新选择

在科技飞速发展的今天,智能生活已经不再是遥不可及的梦想,而是逐渐渗透到我们日常生活的方方面面。Vatee万腾平台,作为智能科技领域的佼佼者,正以其创新的技术、丰富的应用场景和卓越的用户体验,成为智能生活的新选择&…

免费的K歌软件

提到K歌软件,目前市场上的选择似乎并不多,全民的会员制非常恶心!除此之外,IKTV和想唱还不错是其中的热门选择,不过它们的更新频率有点让人有些疲倦。不过最近一款TV K歌软件非常火爆,而且他的曲库更新也是非…

输入框输入值之后,检索表格中是否存在输入框中的值,存在就让当前文字为红色

this.searchValue为输入框的值 createKeywordHtml_content(data) { if (data undefined) { return data; } if (typeof data ! string) { data String(data) } let value data.replace(this.searchValue, <span style"color:#FF5555">$&</span>…

LivePortrait:一张照片生成生动视频,精准操控眼睛和嘴唇动作 本地一键整合包下载

LivePortrait&#xff0c;这个名字听起来就像是魔法&#xff0c;但它其实是现实世界中的黑科技。想象一下&#xff0c;你那尘封已久的相册里&#xff0c;那些定格在时间里的笑脸&#xff0c;突然间动了起来&#xff0c;眨眼、微笑、甚至说话&#xff0c;这不再是电影里的场景&a…

2024 WAIC|第四范式胡时伟分享通往AGI之路:行业大模型汇聚成海

7月4日&#xff0c;2024世界人工智能大会&#xff08;WAIC&#xff09;正式开幕。此次大会围绕核心技术、智能终端、应用赋能等板块展开&#xff0c;展览规模、参展企业数均达历史最高。第四范式受邀参展&#xff0c;集中展示公司十年来在行业大模型产业应用方面的实践。在当天…

不要再盲目入场啦!跨境电商入场第一步!先收集整理这些数据,看清自己该如何入场!【纯分享】

23年、24年确实无愧于“品牌出海元年”的称号&#xff0c;23年出海四小龙——速卖通、TikTokshop、Temu、Shein在海外的爆发让大家看到了海外市场的活动&#xff1b;而24年则有更多的国内品牌将目光瞄向了海外市场&#xff0c;年后开工到今天基本上每天都有客户来咨询出海相关的…

Python制作动态颜色变换:颜色渐变动效

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame颜色变换函数主循环 完整代码 引言 颜色渐变动画是一种视觉上非常吸引人的效果&#xff0c;常用于网页设计和图形应用中。在这篇博客中&#xff0c;我们将使用Python创建一个动态颜色变换的动画效果。通…

PMP–知识卡片--马斯洛需求理论

记忆 马&#xff08;马斯洛&#xff09;背着很多东西&#xff0c;很累&#xff08;生理需要&#xff09;需要找个地方休息&#xff0c;而且需要安全&#xff08;安全需要&#xff09;的地方&#xff0c;就要找朋友&#xff08;社交需要&#xff09;帮忙&#xff0c;但是由于自尊…

【IT领域新生必看】深入浅出Java:揭秘`Comparator`与`Comparable`的神奇区别

文章目录 引言什么是Comparable接口&#xff1f;Comparable接口的定义实现Comparable接口示例&#xff1a; 什么是Comparator接口&#xff1f;Comparator接口的定义实现Comparator接口示例&#xff1a; Comparable与Comparator的区别排序逻辑位置示例&#xff1a; 可扩展性示例…

【IT领域新生必看】深入浅出Java:值传递与引用传递的神奇区别

文章目录 引言什么是值传递&#xff1f;定义和使用值传递示例&#xff1a; 什么是引用传递&#xff1f;定义和使用引用传递示例&#xff1a; 值传递与引用传递的区别参数类型示例&#xff1a; 参数传递方式示例&#xff1a; 修改效果示例&#xff1a; 内存管理示例&#xff1a;…

WPF UI 3D 基本概念 点线三角面 相机对象 材质对象与贴图 3D地球 光源 变形处理 动作交互 辅助交互插件 系列三

WPF UI交互专题 平面图形 Path Drawing 绘图 渐变 Brush 矩阵 Transform 变形 阴影效果 模糊效果 自定义灰度去色效果 系列二-CSDN博客 1软件中的3D基本概念 WPF 中 3D 功能的设计初衷并非提供功能齐全的游戏开发平台。 WPF 中的 3D 图形内容封装在 Viewport3D 元素中&#x…

倒退型自闭症与轻度自闭症有什么区别?

作为星贝育园自闭症儿童康复中心的一名专业教师&#xff0c;我深知家长们在面对自闭症谱系障碍&#xff08;ASD&#xff09;时的种种疑问与挑战&#xff0c;尤其是关于倒退型自闭症与轻度自闭症之间的区别。今天&#xff0c;我将从专业视角出发&#xff0c;深入浅出地解析这两种…

【PWN · ret2shellcode | sandbox-bypass | 格式化字符串】[2024CISCN · 华东北赛区]pwn1_

一道栈ret2shellcodesandbox&#xff08;seccomp&#xff09;格式化字符串的题目 前言 ret2shellcode&#xff0c;已经不是简单的放到栈上、ret这样一个简单的过程。套一层seccomp的沙箱&#xff0c;打ORW又遇到open受限等等&#xff0c;考虑的蛮多。过程中收获最多的可以说是…

谷粒商城学习笔记-13-配置git-ssh-配置代码免密提交

文章目录 一&#xff0c;安装配置Git客户端1&#xff0c;下载git客户端安装包2&#xff0c;安装3&#xff0c;配置3.1&#xff0c;配置用户名3.2&#xff0c;配置邮箱3.3&#xff0c;配置详解 二&#xff0c;配置Git免密1&#xff0c;生成SSH密钥对2&#xff0c;Git配置公钥3&a…

Python数据分析-分子数据分析和预测

一、设计背景 分子结构设计与性质计算对研发新型高能量密度材料具有重要意义。机器学习作为一种大数据计算模型&#xff0c;可以避免复杂、危险的实验&#xff0c;大幅提高研发效率、降低设计和计算成本。本文基于机器学习的方法以及通过构建神经网络&#xff0c;实现对高能量…

HTTP协议格式

目录 正文&#xff1a; 1.概述 2.主要特点 3.请求协议格式 4.响应协议格式 5.响应状态码 总结&#xff1a; 正文&#xff1a; 1.概述 HTTP 协议是用于传输超文本数据&#xff08;如 HTML&#xff09;的应用层协议&#xff0c;它建立在传输层协议 TCP/IP 之上。当我们在…

无人机运营合格证及无人机驾驶员合格证(AOPA)技术详解

无人机运营合格证及无人机驾驶员合格证&#xff08;AOPA&#xff09;技术详解如下&#xff1a; 一、无人机运营合格证 无人机运营合格证是无人机运营企业或个人必须获得的证书&#xff0c;以确保无人机在运营过程中符合相关法规和标准。对于无人机运营合格证的具体要求和申请…

【计算机毕业设计】020基于weixin小程序订餐系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【Linux进阶】文件系统4——文件系统特性

1.磁盘组成与分区的复习 首先说明一下磁盘的物理组成&#xff0c;整块磁盘的组成主要有&#xff1a; 圆形的碟片&#xff08;主要记录数据的部分&#xff09;&#xff1b;机械手臂&#xff0c;与在机械手臂上的磁头&#xff08;可擦写碟片上的数据);主轴马达&#xff0c;可以…