数据结构===二叉树

文章目录

  • 概要
  • 二叉树的概念
  • 分类
  • 存储
  • 遍历
    • 前序
    • 中序
    • 后序
  • 小结

概要

简单写下二叉树都有哪些内容,这篇文章要写什么

  1. 二叉树的概念
  2. 分类,都有哪些
  3. 二叉树遍历

对一个数据结构,最先入手的都是定义,然后才会有哪些分类,对二叉树这个数据结构来说,遍历很有用。接下来看看。

二叉树的概念

二叉树的相关概念

二叉树是每个节点最多只有两个分支,分别叫“左子树”,“右子树”。一般是父节点>左子树 而且 父节点<右子树。

分类

基础概念有了,看看都有哪些种类

看过基础概念,再来看看都有哪些二叉树。主要有以下几种:
1. 满二叉树
2. 完全二叉树

什么是满二叉树呢?在二叉树中,叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点,这种二叉树就叫做满二叉树。如下图:

在这里插入图片描述
再来看看完全二叉树。在二叉树中,叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大。这样的二叉树是完全二叉树。如下图:

在这里插入图片描述
如上图,左边是完全二叉树,右边不满足条件,是非完全二叉树。

存储

按照存储划分有哪些?
其他的数据结构聊过,都是数组和链表的存储划分。二叉树这么划分,可以分为顺序存储法和链式存储法。

遍历

二叉树的遍历

对于二叉树这种非线性结构,遍历有前序,中序,后序三种遍历方式。

前序

前序遍历是指,对于树中的任意节点来说,先打印这个节点,然后再打印它的左子树,最后打印它的右子树。

递推公式:
前序遍历的递推公式:
preOrder® = print r->preOrder(r->left)->preOrder(r->right)

void preOrder(Node* root) {if (root == null) return;print root // 此处为伪代码,表示打印root节点preOrder(root->left);preOrder(root->right);
}

中序

中序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它本身,最后打印它的右子树。

中序遍历的递推公式:
inOrder® = inOrder(r->left)->print r->inOrder(r->right)

void inOrder(Node* root) {if (root == null) return;inOrder(root->left);print root // 此处为伪代码,表示打印root节点inOrder(root->right);
}

后序

后序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它的右子树,最后打印这个节点本身。

后序遍历的递推公式:
postOrder® = postOrder(r->left)->postOrder(r->right)->print r


void postOrder(Node* root) {if (root == null) return;postOrder(root->left);postOrder(root->right);print root // 此处为伪代码,表示打印root节点
}

小结

二叉树的数据结构

这一篇主要写了二叉树的概念,分类,完全二叉树,满二叉树;按照存储划分顺序存储,链式存储;遍历有三种方式:前序,中序,后序;基本上就这么多了。OK,翻篇。

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

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

相关文章

时代少年团MV女主被骂上热搜,时代峰峻走到了十字路口

女演员和男团拍个MV都会被骂上热搜&#xff0c;这年头粉丝都这么霸道了&#xff1f; #时代少年团女主 贺美琦# #贺美琦曾是TFBOYS的MV女主# #时代少年团MV有女主# ...... 自从时代少年团第三张专辑《叁重楼》的新歌《那些我没说的话》曝光之后&#xff0c;歌曲MV中女主角的…

开源电子邮件营销平台 listmonk 使用教程

做产品肯定要做电子邮件营销&#xff0c;特别是面向海外的产品&#xff0c;电子邮件营销已成为企业与客户沟通、建立品牌忠诚度和推动销售的重要工具&#xff0c;可以直接接触到目标受众&#xff0c;提供个性化内容&#xff0c;并以相对较低的成本获得可观的投资回报。你看&…

Vue2——前端笔记

Vue 一、Vue核心1.1、vue简介1.2、初始vue1.3、模板语法1.4、数据绑定1.5、el与data的两种写法1.6、MVVM模型1.7、Vue中的数据代理1.7.1、Object.defineProperty() 理解1.7.2、Vue中的数据代理 1.8、事件处理1.8.1、事件的基本用法1.8.2、事件修饰符1.8.3、键盘事件 1.9、计算属…

KUKA机器人KR3 R540维护保养——更换齿形带

对KUKA机器人进行维护保养&#xff0c;可以增加机器人的使用寿命&#xff0c;减少故障率。本篇文章的内容是更换KUKA机器人轴齿形带。我们知道机器人长时间运行后&#xff0c;部分轴的齿形带会发生磨损&#xff0c;张力也会发生变化&#xff0c;这时就需要更换齿形带。本篇文章…

RoNID:通过生成可靠标签与聚类友好型表征来实现新意图的发现

论文地址&#xff1a;https://arxiv.org/abs/2404.08977 原文地址&#xff1a;intents-are-not-going-away-ronid-is-a-new-intent-discovery-framework 2024 年 4 月 26 日 Robust New Intent Discovery&#xff08;RoNID&#xff09;框架致力于在开放域场景中识别已知意图并合…

【STM32+HAL】DS18B20读取环境温度

一、准备工作 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 二、所用工具 1、芯片&#xff1a; STM32F407VET6 2、IDE&#xff1a; MDK-Keil软件 3、库文件&#xff1a;STM32F4xxHAL库 三、实现功能 串口打印当前温度值…

羊毛项目(华为iPhone茅台),讲解抢购渠道与抢购注意事项

薅羊毛天花板&#xff0c;华为iPhone茅台无脑撸&#xff0c;几分钟换几百元(非脚本项目) 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码&#xff1a;0b8x

投屏协议DLNA

目录 1. 常见投屏方案 2. 什么是DLNA 3. DLNA设备分类 4&#xff0c;DLNA的架构 1. 常见投屏方案 常见的投屏方案主要有以下几种&#xff1a; DLNA DLNA的全称是DIGITAL LIVING NETWORK ALLIANCE(数字生活网络联盟)。DLNA委员会已经于2017年1月5日正式解散&#xff0c;原…

Merck:mPAGE® Lux SDS-PAGE制胶系统

相对于传统SDS-PAGE制胶工艺&#xff0c;Merck公司的mPAGE Lux制胶系统是一种更快速、简单、安全的替代方法&#xff0c;可实现更具可重现性的结果。mPAGE Lux制胶系统可在90秒内完成小型凝胶固化&#xff0c;而传统方法则需要90分钟以上。该系统采用紫外线照射快速制胶工作流程…

用 node 写一个命令行工具,全局安装可用

现在&#xff0c;不管是前端项目还是 node 项目&#xff0c;一般都会用 npm 做包管理工具&#xff0c;而 package.json 是其相关的配置信息。 对 node 项目而言&#xff0c;模块导出入口文件由 package.json 的 main 字段指定&#xff0c;而如果是要安装到命令行的工具&#x…

【高阶数据结构(一)】并查集详解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:高阶数据结构专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; 高阶数据结构 1. 前言2. 并查集…

等保2.0有哪些好处,到底要花多少钱?今天一个文章给你讲透

自从等保2.0相关标准正式发布以来&#xff0c;等级保护测评已然成为网络安全行业的热门话题&#xff0c;这意味着等保进入了一个全新的高度。 目前一些机构国家单位项目都有等保资质这一项&#xff0c;早做的客户符合这一标准&#xff0c;竞争项目就更有把握了。 第一次做完等…

数据分析的统计推断

数据分析的统计推断 前言一、提出问题二、统计归纳方法三、统计推断四、统计推断步骤如何进行统计推断统计推断的基本问题点估计区间估计总体方差已知总体方差未知 假设检验假设检验的假设显著性水平 五、检验统计量常见的检验统计量 六、检验方法七、拒绝域八、假设检验步骤九…

【JavaEE网络】从数据链路层到应用层的DNS

目录 数据链路层以太网 DNS 数据链路层 越往下与程序员越远 代表协议&#xff1a;以太网。平常用的网线也叫“以太网线”&#xff0c;平常用的交换机也叫“以太网交换机” 以太网 认识以太网 “以太网” 不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含…

Day19 代码随想录打卡|字符串篇---反转字符串II

题目&#xff08;leecode T541&#xff09;&#xff1a; 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小…

基于uniapp+vue3+vite实现小程序构建Android、iOS多端项目配置详解

&#x1f680; 作者 &#xff1a;“二当家-小D” &#x1f680; 博主简介&#xff1a;⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人&#xff0c;8年开发架构经验&#xff0c;精通java,擅长分布式高并发架构,自动化压力测试&#xff0c;微服务容器化k…

网络驱动--汽车ETNB(瑞萨)

以太网AVB (ETNB) 介绍RH850/U2A-EVA的属性&#xff0c;如编号 单元、寄存器的基址。描述了函数和寄存器 ETNB的成员。 两个单元&#xff1b;Units ▪ Fast Ethernet ETNB0 ▪ Gigabit Ethernet ETNB1 单元通道特点 For ETNB0 (Fast Ethernet) ▪ Communication interface ▪…

基于 llama2 的提示词工程案例2

优化大型语言模型&#xff08;LLMs&#xff09; 优化大型语言模型&#xff08;LLMs&#xff09;中的提示词&#xff08;prompts&#xff09;是提高模型性能和输出相关性的重要手段。以下是一些优化提示词的方向&#xff1a; 明确性&#xff1a;确保提示词清晰明确&#xff0c;…

Rust 实战thiserror+自定义错误消息体

导航 一、背景二、实践1、导入thiserror2、自定义错误消息体&#xff08;1&#xff09;创建ErrMsg.rs和创建自定义结构体&#xff08;2&#xff09;lib.rs添加ErrMsg&#xff08;3&#xff09;main函数&#xff08;4&#xff09;完整代码 一、背景 开发中遇到需要通用、能够满…