数据结构【树和二叉树】

树和二叉树

  • 前言
  • 1.树
    • 1.1树的概念和结构
    • 1.2树的相关术语
    • 1.3树的表示方法
    • 1.4 树形结构实际运用场景
  • 2.二叉树
    • 2.1二叉树的概念和结构
    • 2.2二叉树具备以下特点:
    • 2.3二叉树分类
  • 3.满二叉树
  • 4.完全二叉树
  • 5.二叉树性质
  • 6.附:树和二叉树图示

前言

欢迎莅临姜行运主页
https://blog.csdn.net/2401_84320036?type=blog
欢迎指导本人数据结构专栏(https://blog.csdn.net/2401_84320036/category_12950167.html)

1.树

1.1树的概念和结构

定义:树是一种非线性的数据结构,它是由 n(n>=0)个有限结点组成⼀个具有层次关系的集合。为什么叫树,因为它看起来像一棵倒挂的树。

  • 有一个特殊的结点,称为根结点,根结点没有前驱结点。
  • 除了根结点外,每个结点有且仅有一个父结点。
  • 子树不相交。
  • 一棵N个结点的树有N-1条边。

1.2树的相关术语

父结点/双亲结点:若一个结点含有子结点,则这个结点称为其子结点的父结点。
子结点/孩子结点:一个结点含有的子树的根结点称为该结点的子结点; 如上图:B是A的孩⼦结点
结点的度:一个结点有几个孩子,他的度就是多少。
树的度:一棵树中,最大的结点的度称为树的度。
叶子结点/终端结点:度为 0 的结点称为叶结点。
分支结点/非终端结点:度不为 0 的结点。
兄弟结点:具有相同父结点的结点互称为兄弟结点(亲兄弟)。
结点的层次:从根开始定义起,根为第 1 层,根的子结点为第 2 层,以此类推;
树的高度或深度:树中结点的最大层次。
结点的祖先:从根到该结点所经分支上的所有结点。
路径:⼀条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。
子孙:以某结点为根的子树中任一结点都称为该结点的子孙。
森林:由 m(m>0)棵互不相交的树的集合称为森林.

1.3树的表示方法

struct TreeNode
{struct Node* child; // 左边开始的第⼀个孩⼦结点struct Node* brother; // 指向其右边的下⼀个兄弟结点int data; // 结点中的数据域
};

1.4 树形结构实际运用场景

文件系统是计算机存储和管理文件的⼀种方式,它利用树形结构来组织和管理文件和文件夹。在文件系统中,树结构被广泛应用,它通过父结点和子结点之间的关系来表示不同层级的文件和文件夹之间的关联。

2.二叉树

2.1二叉树的概念和结构

在树形结构中,常用的就是二叉树,⼀棵二叉树是结点的⼀个有限集合,该集合由(⼀个根结点加上两棵别称为左子树和右用树的二叉树组成)或者为(空)。

2.2二叉树具备以下特点:

  • 二叉树不存在度大于 2 的结点。
  • 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树

注意:对于任意的二叉树都是由以下几种情况复合而成的

2.3二叉树分类

  1. 满二叉树
  2. 完全二叉树

3.满二叉树

一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。
如果⼀
个⼆叉树的层数为 K ,且结点总数是在这里插入图片描述
,则它就是满二叉树。
等比数列计算,从二的指数从零到一计算。

4.完全二叉树

除了最后一层,其他每层的结点个数都达到最大,最后一层结点个数不一定最大,最后一次的结点按照顺序由左到右依次排列。

5.二叉树性质

根据满二叉树的特点可知:
在这里插入图片描述

6.附:树和二叉树图示

在这里插入图片描述

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

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

相关文章

css面板视觉高度

css面板视觉高度 touch拖拽 在手机端有时候会存在实现touch上拉或者下拉的样式操作 此功能实现可以参考: https://blog.csdn.net/u012953777/article/details/147465162?spm1011.2415.3001.5331 面板视觉高度 前提需求: 1、展示端分为两部分&…

【Linux系统】详解Linux权限

文章目录 前言一、学习Linux权限的铺垫知识1.Linux的文件分类2.Linux的用户2.1 Linux下用户分类2.2 创建普通用户2.3 切换用户2.4 sudo(提升权限的指令) 二、Linux权限的概念以及修改方法1.权限的概念2.文件访问权限 和 访问者身份的相关修改&#xff08…

路由器的基础配置全解析:静态动态路由 + 华为 ENSP 命令大全

🚀 路由器的基础配置全解析:静态&动态路由 华为 ENSP 命令大全 🌐 路由器的基本概念📍 静态路由配置📡 动态路由协议:RIP、OSPF、BGP🖥 华为 ENSP 路由器命令大全🔹 路由器基本…

详细图解 Path-SAM2: Transfer SAM2 for digital pathology semantic segmentation

✨ 背景动机 数字病理中的语义分割(semantic segmentation)是非常关键的,比如肿瘤检测、组织分类等。SAM(Segment Anything Model)推动了通用分割的发展,但在病理图像上表现一般。 病理图像(Pa…

初识Redis · 哨兵机制

目录 前言: 引入哨兵 模拟哨兵机制 配置docker环境 基于docker环境搭建哨兵环境 对比三种配置文件 编排主从节点和sentinel 主从节点 sentinel 模拟哨兵 前言: 在前文我们介绍了Redis的主从复制有一个最大的缺点就是,主节点挂了之…

HTTP header Cookie 和 Set-Cookie

RFC 6265: HTTP State Management Mechanismhttps://www.rfc-editor.org/rfc/rfc6265 Set-Cookie 响应头 服务器使用 Set-Cookie 响应头向客户端&#xff08;通常是浏览器&#xff09;发送 Cookie。 基本格式&#xff1a; Set-Cookie: <cookie名称><cookie值>;…

【Unity完整游戏开发案例】从0做一个太空大战游戏

1.实现飞机移动控制 // 这个脚本实现控制飞机前后移动&#xff0c;方向由鼠标控制 //1.WS控制前后移动2.鼠标控制上下左右旋转3.AD控制倾斜 using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerController : MonoBehav…

【C++】C++11新特性(一)

文章目录 列表初始化initializer_list左值引用和右值引用 列表初始化 在 C98 中可以使用{}对数组或者结构体元素进行统一的列表初始值设定 struct Point {int _x;int _y; }; int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };return 0; …

小黑享受思考心流: 73. 矩阵置零

小黑代码 class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""items []m len(matrix)n len(matrix[0])for i in range(m):for j in range(n):if not m…

精益数据分析(19/126):走出数据误区,拥抱创业愿景

精益数据分析&#xff08;19/126&#xff09;&#xff1a;走出数据误区&#xff0c;拥抱创业愿景 在创业与数据分析的探索之旅中&#xff0c;我们都渴望获取更多知识&#xff0c;少走弯路。今天&#xff0c;我依然带着和大家共同进步的想法&#xff0c;深入解读《精益数据分析…

循环神经网络RNN---LSTM

一、 RNN介绍 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;简称 RNN&#xff09;是一种专门用于处理序列数据的神经网络&#xff0c;在自然语言处理、语音识别、时间序列预测等领域有广泛应用。 传统神经网络 无法训练出具有顺序的数据。模型搭建时没有考…

优考试V4.20机构版【附百度网盘链接】

优考试局域网考试系统具有强大的统计分析功能。优考试通过对考试数据进行统计分析&#xff0c;诸如考试分数分布&#xff0c;考试用时分布&#xff0c;错排行等&#xff0c;让你从整体上了解你的学员&#xff08;员工&#xff09;状态&#xff0c; 同时你也可以对学员&#xff…

【Amazing晶焱科技高速 CAN Bus 传输与 TVS/ESD/EOS 保护,将是车用电子的生死关键无标题】

台北国际车用电子展是亚洲地区重量级的车用电子科技盛会&#xff0c;聚焦于 ADAS、电动车动力系统、智慧座舱、人机界面、车联网等领域。各大车厂与 Tier 1 供应链无不摩拳擦掌&#xff0c;推出最新技术与创新解决方案。 而今年&#xff0c;“智慧座舱” 无疑将成为全场焦点&am…

面试:结构体默认是对齐的嘛?如何禁止对齐?

是的。 结构体默认是对齐的‌。结构体对齐是为了优化内存访问速度和减少CPU访问内存时的延迟。结构体对齐的规则如下&#xff1a; 某数据类型的变量存放的地址需要按有效对齐字节剩下的字节数可以被该数据类型所占字节数整除&#xff0c;char可以放在任意位置&#xff0c;int存…

如何优雅地解决AI生成内容粘贴到Word排版混乱的问题?

随着AI工具的广泛应用&#xff0c;越来越多人开始使用AI辅助撰写论文、报告或博客。然而&#xff0c;当我们直接将AI生成的文本复制到Word文档中时&#xff0c;常常会遇到排版混乱、格式异常的问题。这是因为大部分AI输出时默认使用了Markdown格式&#xff0c;而Word对Markdown…

Golang | HashMap实现原理

HashMap是一种基于哈希表实现的键值对存储结构&#xff0c;它通过哈希函数将键映射到数组的索引位置&#xff0c;支持高效的插入、查找和删除操作。其核心原理如下&#xff1a; 哈希函数&#xff1a;将键转换为数组索引。理想情况下&#xff0c;不同键应映射到不同索引&#xf…

vue3学习之防抖和节流

​ 在前端开发中&#xff0c;我们经常会遇到这样的情况&#xff1a;某些事件&#xff08;如滚动、输入、点击等&#xff09;会频繁触发&#xff0c;如果不加以控制&#xff0c;可能会导致性能问题。Vue3 中的防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&a…

4.2.2 MySQL索引原理以及SQL优化

文章目录 4.2.2 MySQL索引原理以及SQL优化1. 索引与约束1. 索引是什么2. 索引的目的3. 几种索引4. 约束1.外键2. 约束 vs 索引的区别 5. 索引实现1. 索引存储2. 页3. B树4. B树层高问题5. 自增id6. 聚集索引7. 辅助索引 8. innnodb体系结构1. buffer pool2. change buffer 9. 最…

【学习笔记】文件包含漏洞--本地远程包含、伪协议、加密编码

一、文件包含漏洞 和SQL等攻击方式一样&#xff0c;文件包含漏洞也是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行。 什么叫包含呢&#xff1f;以PHP为例&#xff0c;我们常常把可重复使用的函数写入到单个文件中&…

蓝桥杯 2021年模拟赛 扫雷问题

题目&#xff1a; 在一个 n 行 m 列的方格图上有一些位置有地雷&#xff0c;另外一些位置为空。 请为每个空位置标一个整数&#xff0c;表示周围八个相邻的方格中有多少个地雷。 输入描述 输入的第一行包含两个整数 n,m。 第 22行到第n1 行每行包含 m 个整数&#xff0c;相…