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总结 的相关文章

  • 考试 2022 5 20 代码

    倒数第一 include lt bits stdc 43 43 h gt using namespace std define INF 0x3f3f3f3f const int N 61 1e6 43 10 define ios ios s
  • HGAME 2022 Writeup

    文章目录 Level Week1 WEB easy auth蛛蛛 嘿嘿 我的蛛蛛Tetris plusFujiwara Tofu Shop MISC 欢迎欢迎 xff01 热烈欢迎 xff01 这个压缩包有点麻烦好康的流量群青 其实是幽灵东
  • Vim配置文件vimrc 2022_11_18

    Vimrc简介 vimrc是vim的配置文件 xff0c Vim编辑器相关的所有功能开关都可以通过 vimrc文件进行设置 备注 xff1a 文件名中的 rc 是出自 run commands 最初的源头是麻省理工学院在1965年发展的CT
  • 【Rust日报】2022-02-05 Jotsy:一个由Skytable、Axum和Tokio支持的自托管笔记应用程序...

    宣布Gyroflow 用GPU加速和跨平台UI用Rust编写的高级视频稳定工具 Gyroflow是一个应用程序 xff0c 可以通过使用来自陀螺仪和可选的加速度计的运动数据来稳定您的视频 现代相机在内部记录运动数据 xff08 GoPro
  • (2022最新版本)SpringBoot 整合 MyBatis Plus 代码生成器

    1 导入Maven 2 编写GeneratorVO 3 编写service代码 4 编写controller测试 5 请求接口 6 查看生成的目录 1 导入Maven lt dependency gt lt groupId gt com b
  • centos8安装python2.7(2022-6-21亲测有效)

    Centos8自带是的python3 xff0c py脚本是python2的 xff0c 故需要安装python2 7 下载python2 7 18 下载地址 xff1a Python Release Python 2 7 18 Pytho
  • 2022记忆

    今年开年来就重新找工作 xff0c 因为就在去年大概这个时候 xff0c 公司裁员了 找工作 xff0c 对于我们这种大龄程序员来说是一种挑战 xff0c 很多公司表面说可以聊聊 xff0c 最后谈了之后 xff0c 发现技术也可以 xff
  • 2022 New Year‘s Resolution

    Some Might Say 2022 New Year 39 s Resolution Some might say we are on the edge of the new era Always are they saying thi
  • sina 股票接口 2022.1.21 更新

    常年以来 xff0c 作为数据挖掘的一部分 xff0c 作为模拟交易的接口 xff0c 一直使用 sina 的股票接口 http hq sinajs cn 白嫖 xff1b 2022年1月21日 xff0c 这次新浪接口更新后增加了 htt
  • 2022.10.30

    新愁复旧愁 xff0c 苦痛哀伤恨
  • [2022]李宏毅深度学习与机器学习第十五讲(必修)-Meta Learning

    2022 李宏毅深度学习与机器学习第十五讲 xff08 必修 xff09 Meta Learning 做笔记的目的Meta LearningML vs meta learningWhat is learnable in learning a
  • 2022数模国赛B题无人机第一题第一小问的简单编程

    前言 2022年国赛B题是关于无人机定位的抽象模型 xff0c 总体难度不大 接下来简单介绍一下第一题第一小问的程序实现 xff0c 当时国赛仓促 xff0c 写的比较简略 xff0c 仅供参考 背景介绍 无源定位 第一个关键词是无源定位
  • 2022(招聘季)linux面试高频题

    大家好 xff0c 今天给大家分享一下2022最新最全的linux面试高频题 xff0c 希望你们喜欢 linux运维工程师在面试的时候经常会被问到各种问题 xff0c 接下来我也会根据自己的经验将面试题整理下来供大家参考 有不同见解的欢迎
  • Transformer(李宏毅2022)

    本讲内容 xff1a Seq2seq model xff0c 以Transformer模型为例 xff08 Encoder Decoder架构 xff09 应用 xff1a 语音辨识 语音翻译 语音合成 聊天机器人 NLP 文法剖析 mul
  • 【论文笔记】Deblur-NeRF == HKU ==CVPR‘2022

    蓝色 紫色 红色 Deblur NeRF Neural Radiance Fields from Blurry Images Author From Abstract 神经辐射场 xff08 NeRF xff09 由于其显著的合成质量 xf
  • 【2022_10_17】PX4学习

    commander cpp内 int Commander custom command int argc char argv 221行 该函数接受所有commander输入的参数 xff0c strcmp比较后调用不同的函数 strcmp返
  • Visual Studio 2022 C++ CLR 的艰难除 Bug

    请看下面一段代码 xff1a 运行结果 xff1a 这是一个Button xff0c 要用到这段代码是因为字符串出了问题 xff1a 肯定是我写的类出问题了 xff0c 便是我在控制台下测试是正常的 代码 xff1a 运行结果 xff1a
  • 2022-11-15日Linux安装csitools问题及解决办法

    问题一 xff1a 执行完这三步后电脑没有wifi图标了 xff0c 不能联网了 sudo modprobe r iwldvm iwlwifi mac80211 sudo modprobe r iwlwifi mac80211 cfg802
  • 2022-4-21 vrep深度相机Kinect 远程c++(qtcreator) opencv 保存

    从模型库里拉出来一个Kinect相机放在合适位置 xff1a 设置好像素 xff0c 不是标准像素值vrep有警告 xff08 可能数据有误 xff09 xff0c 忽略即可 同样的像素值 xff0c 在c 43 43 端 xff1a sp
  • 字体子集化fontmin应用

    const fm require fontmin const f 字体名称 ttf const fontmin new fm fontmin src f use fm glyph text 天地玄黄 宇宙洪荒 use fm ttf2svg

随机推荐

  • 报 [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 顾名思义就是每个父节点都相应的有俩个