2022/12/30总结

2023-05-16

今日学习了二叉树有关知识。

二叉树

二叉树通俗来讲就是一个有俩个指针的链表。他们大多长这个样子:

这里还有俩个概念了,二叉树分为完全二叉树和满二叉树

上面所说的是满二叉树,顾名思义就是每个父节点都相应的有俩个指针,通常左边的叫左孩子或者左子树,右边的叫右孩子或者右子树。

而完全二叉树是可以在最底端的右边连续的没有节点比如下面这俩个:

 

 

 

这俩个都是完全二叉树。

这里扩展一下堆:堆是一个完全二叉树。堆(Heap)是计算机科学中一类特殊的数据结构,是最高效的优先级队列。堆通常是一个可以被看做一棵完全二叉树的数组对象。堆中的某个节点的值总是不大于或者不小于其父节点。根节点最大的堆叫做最大堆或者大根堆,根节点最小的堆叫做最小堆或者小根堆。常见的堆有二叉堆和斐波拉契堆。堆是非线性结构。

二叉树有四种遍历方式:

先序遍历,中序遍历,后序遍历,层序遍历。

前面三种是根据根节点的次序划分的,先序遍历就是先遍历根节点,再依次是左子树,右子树。中序遍历就是把根节点放在中间,是左根右的结构(左子树,根节点,右子树)。后序遍历是把根节点放在最后的,所以它的遍历是左右根。而层序遍历就是一层一层遍历。

 

如果按照上面所说的遍历方式,那么:

先序遍历:1->2->4->8->9->5->3->6->7

中序遍历:8->4->9->2->5->1->6->3->7

后序遍历:8->9->4->5->2->6->7->3->1

层序遍历:1->2->3->4->5->6->7->8->9

      如果还是不太能够理解这些遍历的方式,我强烈推荐大家去看这篇文章二叉树三种遍历(动态图+代码深入理解)_杨 戬的博客-CSDN博客_写出如下二叉树三种遍历的结果写的很好,很浅显易懂。

然后就是代码实现咯。

1.我们创建有左右俩个指针的结构体。

2.在创建的时候我用的是先序顺序去创建,因为这样子好写一点。然后我写的是递归写法,判断当前的数字是不是0,是0就返回NULL,如果不是那么可以继续左右创建。(当然输入的时候如果末尾的节点没有左节点或者右节点,我们是需要输入俩个0的)。

3.输出遍历方式,运用递归也是蛮简单的,按照先序遍历的话,就是先输出根节点,再把左子树拿去遍历即可。而中序就是利用递归的思想,先调用head->lnext;然后输出根节点,最后调用head->rnext;而后序也是一样的道理。

#include<stdio.h>
#include<malloc.h>
typedef struct node
{
	int x;
	struct node *lnext;
	struct node *rnext;
}NODE;
NODE* creat()
{
	int k;
	NODE *head;
	scanf("%d",&k);
	if(k==0) return NULL;
	head=(NODE *)malloc(sizeof(NODE));
	head->x=k;
	head->lnext=creat();
	head->rnext=creat();
	return head;
}
int xxput(NODE *head)
{
	if(head==NULL) return 0;
	printf("%d ",head->x);
	xxput(head->lnext);
	xxput(head->rnext);
}
int zxput(NODE *head)
{
	if(head==NULL) return 0;
	zxput(head->lnext);
	printf("%d ",head->x);
	zxput(head->rnext);
}
int hxput(NODE *head)
{
	if(head==NULL) return 0;
	hxput(head->lnext);
	hxput(head->rnext);
	printf("%d ",head->x);
}
int main()
{
	NODE *head;
	puts("请输入你所要创建的二叉树先序遍历(输入0代表结束当前子树):");
	head=creat();
	puts("先序遍历为:");
	xxput(head);
	puts("");
	puts("中序遍历为:");
	zxput(head);
	puts("");
	puts("后序遍历为:");
	hxput(head);
	puts("");
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022/12/30总结 的相关文章

  • xindi-2022-08-23数据分析记录

    将RNA seq原始数据存放在raw data文件夹 xff0c 经过去除接头的数据存放在clean data中 1 使用Trim Galore软件对两次数据进行质控 xff0c 去掉20bp以下的reads vim新建RNA seq sc
  • JetBrains IntelliJ IDEA 2022.2 使用 Java 17 运行时

    JetBrains 发布 了 IntelliJ IDEA 2022 2 xff0c 支持 Java 17 和最新的语言和框架 xff0c 如 Scala Kotlin Spring 6 和 Spring Boot 3 这个新版本使用了 Je
  • Vim配置文件vimrc 2022_11_18

    Vimrc简介 vimrc是vim的配置文件 xff0c Vim编辑器相关的所有功能开关都可以通过 vimrc文件进行设置 备注 xff1a 文件名中的 rc 是出自 run commands 最初的源头是麻省理工学院在1965年发展的CT
  • 2022复盘&2023计划

    个人成长计划 2022复盘 自媒体 B站 4月10日成为UP主 发布了35个视频 播放量13 6w 累计直播431h 粉丝量1160 获赞量2058 公众号 1053关注 36篇内容 小红书 136粉丝 1167赞 知乎 85关注 48赞
  • 使用Visual Studio 2022运行C++代码

    使用Visual Studio 2022运行C 43 43 代码 1 打开VS 2022 xff0c 创建新项目 2 安装多个工具和功能 3 选中 使用C 43 43 的桌面开发 和 通用Windows平台开发 xff0c 点击修改 xff
  • 数学建模学习(1)———— 逻辑回归的使用和案例(2022.7.18)

    许多数学建模的使用基本都是一元线性回归 xff0c 和多元线性回归开始 xff0c 但由于经常看关于这两个东西 xff0c 实在不想从这开始整理笔记 xff0c 等后面印象不深后在整理过 文章目录 目录 文章目录 一 逻辑回归介绍 二 逻辑
  • 2022年ABC模块样题十套分享

    2022年ABC模块样题十套分享 样题分享传送门
  • 2022 12 3

    将遭遇的苦难试做上天所给予的理所当然 xff0c 当撑不下去后 xff0c 就用肉泥与血液筑就保护幸福和快乐的围墙 xff0c 人的一生便如此草草地收尾了
  • 2022-6-12:OpenCV入门(十一)feature2d组件——角点检测

    Harris角点检测 如果某一点在任意方向的一个微小变动都会引起灰度很大的变化 xff0c 那么我们就把它称之为角点 角点作为图像上的特征点 xff0c 包含有重要的信息 xff0c 在图像融合和目标跟踪及三维重建中有重要的应用价值 它们在
  • 2022/12/30总结

    今日学习了二叉树有关知识 二叉树 二叉树通俗来讲就是一个有俩个指针的链表 他们大多长这个样子 xff1a 这里还有俩个概念了 xff0c 二叉树分为完全二叉树和满二叉树 上面所说的是满二叉树 xff0c 顾名思义就是每个父节点都相应的有俩个
  • 【2022阿里灵犀互娱】游戏测开笔试AC_Code

    测开笔试 xff0c 90分钟 xff0c 3道编程题 43 八股 xff0c 第二题输出格式模拟题 xff0c 就不贴了 T1 进制转换 题意 有一个数 xff0c 可能是2 xff5e 16进制的其中之一 xff0c 算出所有可能的结果
  • 使用Visual Studio 2022运行C++代码

    使用Visual Studio 2022运行C 43 43 代码 1 打开VS 2022 xff0c 创建新项目 2 安装多个工具和功能 3 选中 使用C 43 43 的桌面开发 和 通用Windows平台开发 xff0c 点击修改 xff
  • Visual Studio 2022 C++ CLR 的艰难除 Bug

    请看下面一段代码 xff1a 运行结果 xff1a 这是一个Button xff0c 要用到这段代码是因为字符串出了问题 xff1a 肯定是我写的类出问题了 xff0c 便是我在控制台下测试是正常的 代码 xff1a 运行结果 xff1a
  • 2022-3-9 Ubuntu 16 安装opencv 4.5

    ubuntu 16安装 OpenCV 3 的教程 也是安装OpenCV 3 Ubuntu 18 安装 OpenCV 4 5 的 安装完成后 xff0c 手动创建opencv pc xff1a cd usr local lib sudo mk
  • 2022-4-21 vrep深度相机Kinect 远程c++(qtcreator) opencv 保存

    从模型库里拉出来一个Kinect相机放在合适位置 xff1a 设置好像素 xff0c 不是标准像素值vrep有警告 xff08 可能数据有误 xff09 xff0c 忽略即可 同样的像素值 xff0c 在c 43 43 端 xff1a sp
  • 2021总结. 2022展望

    2021 收获了许多 技能上 学习了多个技能 自由泳自由倒立复刻拳王梅威瑟的跳绳训练单板滑雪 总结 技能上尽量是身体力行的 自从看过 囚徒健身 后 被作者的自传所影响 希望成为想他那样的人 认知上 认知上也有了提升 读了许多书 今年比较喜欢
  • Microsoft Visual Studio C++2022 Windows 11 SDK环境

    Microsoft Visual Studio C 43 43 2022 Windows 11 SDK环境 1 安装2 环境变量本文为作者 难拳 原创 xff0c 转载请注明出处 1 安装 Visual Studio 2022适用于Wind
  • 本地资源加载不了 file:// net::ERR_UNKNOWN_URL_SCHEME

    本地资源加载不了 file net ERR UNKNOWN URL SCHEME 解决 开发环境使用tsFile 生产环境使用file
  • getBoundingClientRect offsetWidth offsetHeight

    对于一个旋转的dom元素 getBoundingClientRect 得到的width height是外接矩形的宽高 offsetWidth offsetHeight是未旋转前dom的宽高
  • pixi.js 导出部分区域裁剪图片

    方案 先通过api到出image对象 在通过canvas绘制图片 在导出数据 代码 const x y this app stage getBounds 超出的x y const stageImage this app renderer p

随机推荐

  • 报 [Vue warn]: Error in render: "TypeError: Cannot read property 'stInfoCode' of null" 的错误

    当我们运行 Vue 项目的时候 xff0c 报 Vue warn Error in render 34 TypeError Cannot read property 39 stInfoCode 39 of null 34 的错误 检查 te
  • Realsense T265双目+IMU传感器追踪相机的环境配置指南(Ubuntu+Windows)

    T265追踪相机 xff0c 可以直接读取里程计信息 xff0c 直接输出位置 速度等参数 xff0c 为了了解如何使用 xff0c 利用网上的信息进行了环境的配置 xff0c 先测试的是Windows平台的使用 xff0c 后来在Ubun
  • openstack中的No valid host was found. No valid host found for resize

    在调整云主机大小的时候遇到了 xff1a No valid host was found No valid host found for resize 通过排错 xff0c 了解到了是配置文件的问题 首先virsh list all 查看云
  • REDIS 源码阅读

    https redissrc readthedocs io en latest datastruct dict html 一个注释的开源项目 xff1a 书是redis的设计与实现 https github com huangz1990 r
  • 树莓派3B/3B+安装win10/11

    手上有一块树莓派3B 43 xff0c 但Linux已经满足不了我了 xff0c 于是准备刷机win11 资源包 xff08 里面自带win10镜像生成程序 xff09 提取码 xff1a 40t9 链接 xff1a https pan b
  • 全网详细解决Client does not support authentication protocol requested by server;consider upgrading Mysql c

    文章目录 1 复现错误2 分析错误3 解决错误 1 复现错误 今天使用Navicat准备连接mysql xff0c 如下图所示 xff1a 点击连接测试按钮时 xff0c 却报出如下错误 xff1a 即1251 Client does no
  • win10系统遭遇VMware USB Arbitration Service 无法启动,错误31的解决方案

    安装VM虚拟机的时候遭遇这个问题 xff0c 查了好几天 xff0c 网上提供的方法是 xff1a 手动启动的时候提示 34 VMware USB Arbitration Service 无法启动 xff0c 出 现错误31 xff1a 连
  • C# Winform窗体属性和操作

    1 窗体属性 通过控件的Anchor和Dock属性来调整 xff0c Dock的优先级比Anchor高 Dock属性 表示控件在窗体中停靠的位置 xff0c 其取值Top Bottom Left Right和Fill分别表示停靠在窗体的顶部
  • ubuntu下为APT设置代理

    Ubuntu下为APT设置代理 一 最简单的方法 图形界面方法 xff1a 新立得软件包管理器 gt 设置 gt 首选项 gt 网络 进行设置代理就可以了 二 编辑命令 方法1 xff1a 如果您 希望apt get xff08 而不是其他
  • typora主题更改(以及旧版本下载地址)

    目录 1 Typora官网2 旧版Typora下载地址3 Typora主题商店3 1 找到本地主题文件夹3 2 添加新主题并使用 4 在Typora中使用LaTeX主题 1 Typora官网 官网地址 xff1a https typora
  • 将投影矩阵P利用QR分解分解出摄像机内外参数(Opencv)

    将投影矩阵P利用QR分解分解出摄像机内外参数 xff08 Opencv xff09 将投影矩阵P利用QR分解分解出摄像机内外参数 输入 xff1a P xff1a 投影矩阵 xff0c 3 4 输出 xff1a K xff1a 内参数矩阵
  • (转载)依赖、关联、聚合、组合

    类与类图 1 类 Class 封装了数据和行为 xff0c 是面向对象的重要组成部分 xff0c 它是具有相同属性 操作 关系的对象集合的总称 2 在系统中 xff0c 每个类具有一定的职责 xff0c 职责指的是类所担任的任务 xff0c
  • ubuntu14.0.4升级指定内核以及默认内核启动

    一 xff0c 更新到指定的内核版本 1 首先查看当前的内核版本 xff0c 打开终端在窗口输入以下命令 uname a 2 在ubuntu的终端窗口内搜索可用升级的内核版本 apt cache showpkg linux headers
  • 解决Cannot download “https://github.com/sass/node-sass/releases/download...问题

    因很早做了一个小demo xff0c 并且在其他成熟的电脑上 xff08 node配置好的 xff09 下载依赖包没什么问题 xff0c 最近就在新的电脑上配置好所有东西后 xff0c 去下载这个demo的依赖包 xff0c 就出现了nod
  • 如何阅读 Redis 源码?

    在这篇文章中 xff0c 我将向大家介绍一种我认为比较合理的 Redis 源码阅读顺序 xff0c 希望可以给对 Redis 有兴趣并打算阅读 Redis 源码的朋友带来一点帮助 第 1 步 xff1a 阅读数据结构实现 刚开始阅读 Red
  • C语言DFS和BFS解决迷宫问题

    C语言DFS与BFS 迷宫问题 题目描述 给定一个 N times MN M 方格的迷宫 xff0c 迷宫里有 TT 处障碍 xff0c 障碍处不可通过 在迷宫中移动有上下左右四种方式 xff0c 每次只能移动一个方格 数据保证起点上没有障
  • 2022第9周、第10周总结

    差分 最近看到了一个关于差分的题目 题目描述 给定一个长度为n的数列a1 a2 an xff0c 每次可以选择一个区间 l r xff0c 使得这个区间内的数都加1或者都减1 请问至少需要多少次操作才能使数列中的所有数都相等 xff1f 在
  • 装箱问题(DP)

    题目描述 有一个箱子容量为V xff08 正整数 xff0c 0 xff1c xff1d V xff1c xff1d 20000 xff09 xff0c 同时有n个物品 xff08 0 xff1c n xff1c xff1d 30 xff0
  • 丑数(c语言)

    题目描述 我们把只包含质因子2 3和5的数称作丑数 xff08 Ugly Number xff09 例如6 8都是丑数 xff0c 但14不是 xff0c 因为它包含因子7 习惯上我们把1当做是第一个丑数 输入一个数n xff0c 判断它是
  • 2022/12/30总结

    今日学习了二叉树有关知识 二叉树 二叉树通俗来讲就是一个有俩个指针的链表 他们大多长这个样子 xff1a 这里还有俩个概念了 xff0c 二叉树分为完全二叉树和满二叉树 上面所说的是满二叉树 xff0c 顾名思义就是每个父节点都相应的有俩个