【从零开始学习数据结构 | 第一篇】树

news2025/1/11 2:33:27

目录

前言: 

树:

树结点之间的关系描述:

 树的常见属性:

森林:

​编辑树的性质:

总结:


前言: 

当谈论数据结构时,树(Tree)是一种极为重要且常用的数据结构之一。树的概念源自现实生活中的树木,它具有分层结构,由节点(Node)边(Edge)组成,形成了一种类似于自然界树木生长的结构。在计算机科学领域,树被广泛运用于各种算法和数据存储场景中,如文件系统、数据库索引、编译器等。

 

树:

他的结构就和我们真实的树看起来一样。如下图所示:

这种数据结构,任何节点都有且只有一个前驱。任何一个树都可以看作是由一个根节点以及部分子树构成的。

树结点之间的关系描述:

  1. 父子关系:树中每个节点(除了根节点)都有一个父节点,父节点指向其子节点,子节点是父节点的直接下级

  2. 兄弟关系:具有同一个父节点的节点之间称为兄弟节点,它们在同一层级上。

  3. 祖先和后代关系:一个节点的所有父节点以及这些父节点的父节点等都被称为该节点的祖先;而一个节点的所有子节点以及这些子节点的子节点等都被称为该节点的后代。

  4. 叶子节点和内部节点没有子节点的节点称为叶子节点,而至少有一个子节点的节点称为内部节点

 树的常见属性:

  1. 结点的层次(深度)——从上往下数
  2. 结点的高度——从下往上数
  3. 树的高度——总共多少层
  4. 结点的度——节点一共有几个子节点
  5. 树的度——各个节点之中度的最大值

有序树:从逻辑上看:树中结点的各个子树从左至右是有次序的,不能互换

无序树:从逻辑上看,树中结点的各个子树从左至右是无次序的,可以互换

森林:

森林就是多颗互不相交的树的集合


树的性质:

1.结点树=总度数+1

总度数=7,加上1之后等于节点数8。

2.度为m的树与m叉树的区别

度为m的树m叉树
任意结点的度\leqslantm(最多有m个子节点)任意结点的度\leqslantm
至少有一个结点度=m允许所有结点的度都<m
一定是非空树,至少有m+1个结点可以是空树

度为m的树:各节点的度的最大值为m

m叉树:每个节点最多只能有m个子节点的树 

3.度为m的树第i层最多有m^{i-1_{}}个节点(i\geqslant1)

4.高度为h的m叉树最多有 \frac{m^{h}-1}{m-1}个节点,最少有h个节点

5.高度为h,度为m的树至少有h+m-1个节点。

 6.具有n个节点的m叉树的最小高度为\log_{m}(n(m-1)+1)

这其实是用数学推过来的,大家感兴趣的话可以自己推一下。 

总结:

本文我们介绍了一下树以及树的常见性质,下文我们讲深入学习树中一个比较重要的部分:二叉树。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

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

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

相关文章

React三大属性---state,props,ref

react的三大属性 react的三大属性分别是state props 和ref 是传递数据的重要内容 State state是组件对象最重要的属性 包含多个key-value的组合呢 存在于组件实例对象中 基本使用 此时demo是通过onClick的回调 所以this是undefined 本来应该是window 但是局部开启了严格模…

百科源码生活资讯百科门户类网站百科知识,生活常识

百科源码生活资讯百科门户类网站百科知识,生活常识 百科源码安装环境 支持php5.6&#xff0c;数据库mysql即可&#xff0c;需要有子目录权限&#xff0c;没有权限的话无法安装 百科源码可以创建百科内容&#xff0c;创建活动内容。 包含用户注册&#xff0c;词条创建&#xff…

数学与计算机(2)- 线性代数

原文&#xff1a;https://blog.iyatt.com/?p13044 1 矩阵 NumPy 中 array 和 matrix 都可以用于储存矩阵&#xff0c;后者是前者的子类&#xff0c;array 可以表示任意维度&#xff0c;matrix 只能是二维&#xff0c;相当于矩阵专用&#xff0c;在一些矩阵的运算操作上较为直…

Mac屏幕录制编辑软件

以下是一些Mac平台上受到推荐和好评的屏幕录制编辑软件&#xff1a; OBS Studio&#xff08;免费且开源&#xff09;&#xff1a; OBS 是一款功能强大的免费屏幕录制工具&#xff0c;不仅限于游戏直播&#xff0c;也适用于各种屏幕录制需求。它允许用户捕获屏幕、摄像头、音频&…

关于MySQL数据库的学习3

目录 前言: 1.DQL&#xff08;数据查询语言): 1..1基本查询&#xff1a; 1.2条件查询&#xff1a; 1.3排序查询&#xff1a; 1.3.1使用ORDER BY子句对查询结果进行排序。 1.3.2可以按一个或多个列进行排序&#xff0c;并指定排序方向&#xff08;升序ASC或降序DESC&#…

C语言 02 安装

C 语言的编译器有很多&#xff0c;其中最常用的是 GCC&#xff0c;这里以安装 GCC 为例。 Windows 这里以 Windows 11 为例 官方下载地址&#xff1a;https://www.mingw-w64.org/ 选择 Downloads 选择 Windows 的 GCC 环境 MingW-W64-builds 选择 GitHub 根据操作系统位…

IP复习实验(gre)

拓扑图(r6相当于公网设备) 要求r1,r2,r3之间是hub-spoke架构 。r1,r4,r5是全连接&#xff0c;最后做OSPF跑通 第一步把所以接口配置了 第二步配置缺省0.0.0.0 0 n6.1.1.6 &#xff08;n就是具体的路由器r1 n就是1&#xff09; 测试一下先保证公网通畅 就先配置hub架构的 hu…

arp动态表缓存清除

一、arp表里清除表状态&#xff1a; 1&#xff0c;Delay&#xff1a;请求arp 2&#xff0c;Reachab&#xff1a;响应arp 3&#xff0c;Stale此状态下&#xff0c;待gc_stale_time超时后&#xff0c;准备gc_interval定期清理 二、限制条件 base_reachable_time&#xff1a;后变…

使用gitee自动备份文件

需求 舍友磁盘前两天gg了&#xff0c;里面的论文没有本地备份&#xff0c;最后费劲巴拉的在坚果云上找到了很早前的版本。我说可以上传到github&#xff0c;建一个私人仓库就行了&#xff0c;安全性应该有保证&#xff0c;毕竟不是啥学术大亨&#xff0c;不会有人偷你论文。但是…

C到C++的敲门砖-1

文章目录 关键字命名空间输入和输出缺省参数函数重载 关键字 相较于C语言32个关键字&#xff1a; autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifwhilesta…

配置阿里云加速器

国内镜像中心常用阿里云或者网易云。在本地docker中指定要使用国内加速器的地址后&#xff0c;就可以直接从阿里云镜像中心下载镜像。 2024阿里云-上云采购季-阿里云 [rootlocalhost /]# mkdir -p /etc/docker [rootlocalhost /]# tee /etc/docker/daemon.json <<-EOF &…

ThreadLocal-阿里规范对ThreadLocal要求

package com.nanjing.gulimall.zhouyimo.test;import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;/*** @author zhou* @version 1.0* @date 2024/3/17 11:05 下午*/ class MyData{ThreadLocal<Integer> threadLocal = ThreadLocal.wi…

C语言 求方程ax^2+bx+c=0的根

一、求方程ax^2bxc0的根&#xff0c;用三个函数分别求当&#xff1a;b^2-4ac大于0&#xff0c;等于0&#xff0c;和小于0时的根并输出结果。从主函数输入a&#xff0c;b&#xff0c;c的值。 #include <stdio.h> #include<math.h> float x,x1,x2,disc; int main() …

ChatGPT编程实现简易聊天工具

ChatGPT编程实现简易聊天工具 今天借助[[小蜜蜂]][https://zglg.work]网站的ChatGPT练习socket编程&#xff0c;实现一个简易聊天工具软件。 环境&#xff1a;Pycharm 2021 系统&#xff1a;Mac OS 向ChatGPT输入如下内容&#xff1a; ChatGPT收到后&#xff0c;根据返回结…

【CSP试题回顾】201509-1-数列分段

CSP-201509-1-数列分段 解题代码 #include <iostream> #include <vector> #include <algorithm> using namespace std;int n;int main() { cin >> n;vector<int>arr(n);for(auto & it:arr) {cin >> it;}auto last unique(arr.be…

DevOps 环境预测测试中的机器学习

在当今快节奏的技术世界中&#xff0c;DevOps 已成为软件开发不可或缺的一部分。它强调协作、自动化、持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;&#xff0c;以提高软件部署的速度和质量。预测测试是这一领域的关键组成部分&#xff0c;其中机器…

生成式AI竞赛:开源还是闭源,谁将主宰未来?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

2024抖音矩阵云混剪系统源码 短视频矩阵营销系统

2024抖音矩阵云混剪系统源码 短视频矩阵营销系统 矩阵营销系统多平台多账号一站式管理&#xff0c;一键发布作品。智能标题&#xff0c;关键词优化&#xff0c;排名查询&#xff0c;混剪生成原创视频&#xff0c;账号分组&#xff0c;意向客户自动采集&#xff0c;智能回复&am…

Python基础(七)之数值类型集合

Python基础&#xff08;七&#xff09;之数值类型集合 1、简介 集合&#xff0c;英文set。 集合&#xff08;set&#xff09;是由一个或多个元素组成&#xff0c;是一个无序且不可重复的序列。 集合&#xff08;set&#xff09;只存储不可变的数据类型&#xff0c;如Number、…

uwsgi+nginx+django 部署学习

收集静态文件及部署配置 DEBUG False STATICFILES_DIRS [os.path.join(BASE_DIR, "static"), ] STATIC_ROOT /data/static python3 manage.py collectstatic 收集静态文件&#xff0c;成功后可在STATIC_ROOT目录查看 安装依赖 pip3 install uwsgi django项目结…