数据结构===二叉树

news2025/1/15 21:08:06

文章目录

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

概要

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

  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.coloradmin.cn/o/1644723.html

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

相关文章

环保设备在线监控系统

随着环保意识的日益提升&#xff0c;对环境污染的监控与管理成为了我们不可忽视的重要任务。在这个背景下&#xff0c;HiWoo Cloud平台凭借其强大的环保设备在线监控系统&#xff0c;为环保事业注入了新的活力&#xff0c;助力我们共同迈向绿色未来。 一、环保设备在线监控系统…

速锐得深入研究比亚迪E5电控系统及BCU数据及DBC控制策略

新能源汽车中比亚迪作为世界品牌的佼佼者&#xff0c;其E5车型凭借出色的电控系统成为了市场上的一颗璀璨明星。比亚迪E5电控系统不仅体现了技术的先进性&#xff0c;更是智能化、高效率的代名词&#xff0c;它如同一位智慧的指挥官&#xff0c;精确地掌控着汽车的每一个动作&a…

iOS 获取相册标题时不显示中文

一、解决方案 设置info.plist中的Localization native development region 为 China即可 二、图片展示

vue3+vite+axios+ElementPlus+ElLoading简易封装

1.安装按需加载element-plus需要的依赖包 pnpm install element-pluspnpm install axios# 按需自动导入 pnpm install -D unplugin-vue-components unplugin-auto-import# 自动导入element-plus样式 pnpm install -D vite-plugin-style-import2.修改jsconfig.json {"com…

[贪心] 区间选点问题

905. 区间选点 - AcWing题库 思路&#xff1a;就是将所有区间按照右端点排序&#xff0c; 然后选取一些区间的右端点 代码&#xff1a; #include <iostream> #include <algorithm> #include <vector> using namespace std; const int N 100010;typedef p…

银行函证工作操作指引

银行函证工作操作指引 根据《关于加快推进银行函证规范化、集约化、数字化建设的通知》&#xff08;财会〔2022〕39号&#xff09;等文件要求&#xff0c;中国注册会计师协会和中国银行业协会制定了《银行函证工作操作指引》&#xff0c;对银行函证工作中的具体事项予以进一步明…

一款AI工作流项目:phidatahq/phidata

一款AI工作流项目&#xff1a;phidatahq/phidata 构建和测试功能强大的 AI 工作流程。该项目提供了一个工作流平台,可以结合大型语言模型(LLM)和各种工具,扩展模型的实用性和应用范围。[1][4][5] 开发各种 AI 助手应用,如客服聊天机器人、数据分析工具、研究助手等。phidata 提…

API接口接入电商平台通过商品链接URL、商品ID抓取淘宝taobao评论数据key接入示例

要接入淘宝taobao评论数据&#xff0c;你需要先注册一个API账号并获取相应的ApiKey和ApiSecret。接下来&#xff0c;你可以使用Python的requests库来调用API接口。 以下是一个示例代码&#xff1a; # coding:utf-8 """ Compatible for python2.x and python3.…

学习笔记:【QC】Android Q - phone 模块

一、phone init 流程图 二、phone MO 流程图 三、phone MT 流程图 四、Log分析(MO_qcril_hal_分析) 1、RILJ请求dial enqueue进队列&#xff0c;QCRIL-hal pop出来处理&#xff0c;最后还是调用qmi_client_send_msg_async发送给modem 11-07 17:29:23.598 2758 2758 D RILJ …

51. 【Android教程】JSON 数据解析

在上一节我们学习了 xml 数据格式&#xff0c;如果你觉得 xml 的数据比较冗余&#xff0c;标签、属性等等定义过于复杂&#xff0c;那么这一节我们将继续学习另一种更精简、更高效的数据格式—— Json。它广泛的运用于数据持久化以及网络传输中&#xff0c;这一节我们一起学习 …

Anaconda删除虚拟环境目录pkgs和envs|conda瘦身

这个文件夹里面是专门放不同环境中的包的&#xff0c;只是没有区分环境&#xff0c;都混在一起了&#xff0c; 一般在想要删除一个虚拟环境&#xff0c;除了在命令行中输入conda remove -n your_env_name(虚拟环境名称) --all 然后在envs中删除虚拟环境的文件夹&#xff0c; 还…

RedHat7端口操作/RedHat7开启和关闭防火墙/RedHat7防火墙常用操作常用命令

1、查看当前那些端口被放行了 firewall-cmd --list-port 2、开放指定端口 firewall-cmd --zonepublic --add-port8000/tcp --permanent 3、关闭指定的端口 firewall-cmd --zonepublic --remove-port3306/tcp --permanent 4、重载防火墙配置&#xff0c;让新加入的端口生效…

CTF-WEB(MISC)

安全攻防知识——CTF之MISC - 知乎 CTF之MISC杂项从入门到放弃_ctf杂项 你的名字-CSDN博客 CTF MICS笔记总结_archpr 掩码攻击-CSDN博客 一、图片隐写 CTF杂项---文件类型识别、分离、合并、隐写_ctf图片分离-CSDN博客 EXIF&#xff08;Exchangeable Image File&#xff09;是…

【学习AI-相关路程-工具使用-自我学习-NVIDIA-cuda-工具安装 (1)】

【学习AI-相关路程-工具使用-自我学习-NVIDIA-cuda &#xff08;1&#xff09;】 1、前言2、环境配置1、对于jetson orin nx 的cuda环境2、对于Ubuntu 20.04下cuda环境 3、自我总结-安装流程1、在ubuntu下&#xff0c;如果想使用cuda平台&#xff0c;应该注意什么 和 都安装什么…

企业开发基础--数据库

今天完成了数据库学习的全部内容&#xff0c;在事务&#xff0c;索引&#xff0c;范式中要有个人逻辑上的理解&#xff0c;也算是卡着点完成了大多数预期&#xff0c;还有一个Java游戏未完成&#xff0c;会后续补上。 之后的一周要完成34道数据库练习题以及JDBC&#xff0c;学…

台式电脑如何找ip地址和端口

随着互联网的深入发展和广泛应用&#xff0c;每台连接到网络的设备都需要一个独特的标识来确保数据传输的准确与高效。对于台式电脑来说&#xff0c;这个标识就是IP地址&#xff0c;而端口则是数据进出的通道。了解如何查找自己台式电脑的IP地址和端口&#xff0c;不仅有助于日…

森林消防泵:守护绿色生命线的无声战士/恒峰智慧科技

在广袤无垠的森林中&#xff0c;生命的绿色如同一块巨大的调色板&#xff0c;为世界增添了无尽的生机与活力。然而&#xff0c;这美丽的画卷也可能因一场突如其来的火灾而瞬间破碎。因此&#xff0c;有一群默默无闻的消防人员&#xff0c;他们配备的是一台台强大的森林消防泵&a…

LeetCode763:划分字母区间

题目描述 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 …

C#知识|上位机UI设计-详情窗体设计思路及流程(实例)

哈喽,你好啊,我是雷工! 上两节练习记录了登录窗体和主窗体的实现过程,本节继续练习内容窗体的实现,以下为练习笔记。 01 详情窗体效果展示: 02 添加窗体并设置属性 在之前练习项目的基础上添加一个Windows窗体,设置名称为:FrmIPManage.cs 设置窗体的边框和标题栏的外…

母婴店运用商城小程序店铺的效果是什么

母婴市场规模高&#xff0c;还可与不少行业无缝衔接&#xff0c;尤其是以90后、00后为主的年轻人&#xff0c;在备孕生育和婴儿护理前后等整体流程往往不惜重金且时间长&#xff0c;母婴用品无疑是必需品&#xff0c;商家需要多方面拓展全面的客户及打通场景随时消费路径。 运…