树的基本概念和结构

目录

树的概念和结构

树的相关概念

树的特点

树的表示

树的基本应用


树的概念和结构

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合

📌

把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的

树的相关概念

📌

树的概念是以现实中的树的结构以及人类的亲缘关系决定的

根节点:根节点为树的第一个节点,该节点没有前驱节点(即没有父亲节点)

节点的度:一个节点包含的子树的数量即为节点的度的大小

叶节点(或终端节点):度为0的节点

分支节点(或非终端节点):度不为0的节点(A即是根节点,也是分支节点)

父节点(或双亲节点):若一个节点含有子节点,则该节点为其子节点的父节点

子节点(或孩子节点):一个节点含有的子树的父节点称为该节点的子节点

兄弟节点:具有相同的父节点的节点互称为兄弟节点

堂兄弟节点:子节点父节点在同一层的子节点互称为堂兄弟节点

树的度:一个树的度为最大的节点的度

节点的层次:从根节点开始,根为第一层,根的子节点为第二层,以此类推(节点的层次建议从1开始计算)

树的高度或深度:树中节点的最大层次

节点的祖先:从根到该所经过的分支上的所有节点

子孙:以某节点为根的子树中任一节点都称为该节点的子孙

森林:由m(m>0)棵互不相交的树的集合称为森林(应用:并查集)

树的特点

除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继,因此,树是递归定义(根节点(A)→子节点(B)→父节点(B)→子节点(E)→父节点(E)→叶子节点(J))的

树形结构中,子树之间不能有交集,否则就不是树形结构

📌

树的相交:

即两个父节点共用一个子节点,如下图所示:

树的表示

树结构相对线性表就比较复杂了,要存储表示起来就比较麻烦了,既然保存值域,也要保存结点和结点之间的关系,实际中树有很多种表示方式如:双亲表示法,孩子表示法、孩子双亲表示法以及孩子兄弟表示法等。这里就简单的了解其中最常用的孩子兄弟表示法

typedef int TNDataType;
struct TreeNode
{
    struct TreeNode* child; //存储孩子节点的地址
    struct TreeNode* brother; //存储兄弟节点的地址
    TNDataType data; //存储数据 
}

树的基本应用

文件系统的目录树

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot集成docker快速入门demo

一、docker介绍 Docker是一个开源的应用容器引擎&#xff0c;它允许开发者将应用及其依赖打包到一个可移植的容器中。这个容器可以在任何流行的 Linux或 Windows操作系统上运行&#xff0c;并且支持虚拟化。容器是完全基于沙箱机制的&#xff0c;这意味着它们之间不会有任何接口…

一般情况下,硬件中使用Repeating Sequence出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的

一般情况下&#xff0c;出现波形很奇怪就是数据的周期频率和mcu运行的频率不一致导致的 把timer values 修改为0 1就好了&#xff0c;如果是0&#xff0c;0.1就不行&#xff0c;不会有下面的波形

计算机组成原理 — 存储器(2)

高速缓冲存储器 大家好呀&#xff01;我是小笙&#xff0c;由于存储器这部分章节内容较多&#xff0c;我分成二部分进行总结&#xff0c;以下是第二部分&#xff0c;希望内容对你有所帮助&#xff01; 概述 目的&#xff1a;避免CPU空等现象 原理&#xff1a;程序访问的局部…

【王道数据结构】【chapter6图】【P258t7】

试编写 利用DFS实现有向无环图的拓扑排序的算法 #include <iostream> #define maxsize 10 typedef struct node{int data;struct node *next; }node ,*pnode;pnode buynode(int x) {pnode tmp(pnode) malloc(sizeof (node));tmp->datax;tmp->next nullptr;return t…

【K8s】初识PV和PVC

​ 目录 收起 O、致谢 一、前言 二、Volume 2.1 什么是Volume 2.2 为什么要引入Volume 2.3 Volume类型有哪些 2.4 Volume如何使用 2.4.1 通过emptyDir共享数据 2.4.2 使用HostPath挂载宿主机文件 2.4.3 挂载NFS至容器 三、PV和PVC 3.1 什么是PV和PVC 3.2 为什么要引入PV和PVC 3…

Remainder Problem(根号分治)

Educational Codeforces Round 71 (Rated for Div. 2) F. Remainder Problem 题目链接 F. Remainder Problem 题意&#xff1a; 给你一个由 500000 500000 500000 个整数&#xff08;编号从 1 1 1 到 500000 500000 500000 &#xff09;组成的数组 a a a 。最初 a a a…

【JavaEE】网络原理: HTTPS协议相关内容

目录 HTTPS 是什么 HTTPS 的工作过程 对称加密 非对称加密 引入证书 理解数据签名 通过证书解决黑客攻击 HTTPS 是什么 HTTPS也是一个应用层协议, 是在HTTP协议的基础上引入了一个加密层. HTTP协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡…

minHash(最小哈希)和LSH(局部敏感哈希)

在数据挖掘中,有一个比较基本的问题,就是比较两个集合的相似度。关于这个问题,最笨的方法就是用一个两重循环来遍历这两个集合中的所有元素,进而统计这两个集合中相同元素的个数。但是,当这两个集合里的元素数量非常庞大时,同时又有很多个集合需要判断两两之间的相似度时…

代码随想录算法训练营第二十三天| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

文章目录 [1.修剪二叉搜索树(https://leetcode.cn/problems/trim-a-binary-search-tree/description/)2.将有序数组转换为二叉搜索树3.把二叉搜索树转换为累加树 [1.修剪二叉搜索树(https://leetcode.cn/problems/trim-a-binary-search-tree/description/) 遇到超范围节点&…

论文精读--GPT3

不像GPT2一样追求zero-shot&#xff0c;而换成了few-shot Abstract Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task. While typically task-agnos…

探究前端路由hash和history的实现原理(包教包会)

今天我们来讲一讲前端中很重要的一个部分路由&#xff08;router&#xff09;&#xff0c;想必前端小伙伴对‘路由’一词都不会感到陌生。但是如果哪天面试官问你&#xff0c;能大概说一说前端路由的实现原理吗&#xff1f; 你又会如何应对呢&#xff1f; 今天勇宝就带着大家一…

Educational Codeforces Round 160 (Rated for Div. 2) D. Array Collapse(笛卡尔树+DP)

原题链接&#xff1a;D. Array Collapse 题目大意&#xff1a; 给你一个长度为 n n n 的排列 p p p &#xff0c;排列的定义为 [ 1 , 2 , 3 , . . , n ] [1,2,3,..,n] [1,2,3,..,n] 中每个数都出现 恰好 一次。 你可以做 任意多次 这样的操作&#xff1a; 选出一个任意长度…

8万就能买混动!秦PLUS、启源A05、帝豪L Hi-P谁值得买?

文 | AUTO芯球 作者 | 雷歌 你可以不买比亚迪&#xff0c;但一定要感谢比亚迪。 比亚迪凭着一己之力&#xff0c;将整个混动汽车的价格降到了7万元时代。 秦PLUS价格自9.98万直降2万来到7.98万后&#xff0c;它的直接竞争对手们开始降价&#xff0c;长安启源A05混动降至7.8…

Linux提权—服务漏洞,以MySQL-UDF提权为例

UDF(user defined function&#xff0c;用户自定义函数) 利用条件&#xff1a; 有对MySQL数据库进行创建&#xff0c;插入&#xff0c;删除的权限 secure_file_priv为空 利用过程 secure_file_priv的值为空或者是我们恰巧需要用到的目录&#xff0c;如下&#xff1a; 提权成…

数学建模论文、代码百度网盘链接

1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…

C#通过泛型方法的重载分别调用主窗体和提示窗体

目录 一、涉及到的知识点 1.泛型方法的重载 2.使用泛型更好地实现通用化 二、示例&#xff1a;泛型方法及其重载 1.源码 2. 生成效果 实际开发项目时&#xff0c;有时会因为调用窗体或提示窗体过多&#xff0c;而难于管理&#xff0c;这时&#xff0c;可以通过泛型方法的…

关于 REST API,你了解多少?

什么是 REST API REST 是 REpresentational State Transfer 的缩写&#xff0c;是分布式超媒体系统的架构风格。Roy Fielding 于 2000 年在他的著名论文中首次提出了这一点。从那时起&#xff0c;它已成为构建基于 Web 的 API&#xff08;应用程序编程接口&#xff09;的最广泛…

保障工作效率!实时监管员工工作微信

随着移动办公的普及&#xff0c;员工使用微信进行工作沟通已成为常态。为了实时监管员工工作微信&#xff0c;企业可以通过个微管理系统来提高效率并确保合规&#xff1a; 给员工分配微信子账号 企业管理者可以直接在系统上给员工分配子账号&#xff0c;并轻松查看子账号的工…

leetcode hot100 买卖股票的最佳时机二

注意&#xff0c;本题是针对股票可以进行多次交易&#xff0c;但是下次买入的时候必须保证上次买入的已经卖出才可以。 动态规划可以解决整个股票买卖系列问题。 dp数组含义&#xff1a; dp[i][0]表示第i天不持有股票的最大现金 dp[i][1]表示第i天持有股票的最大现金 递归公…