【数据结构】树的基本概念 | 入门树以及二叉树必熟知

的学习过程中,二叉树比较重要,但是在学习二叉树之前,得先需要了解到一些数的概念。

树的定义

是一种非线性的数据结构,它是由 n(n >= 0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像是一棵倒挂的树,也就是说,就是一个根朝上,叶朝下的数。

树的性质

有一个特殊的结点,称为根结点,根结点没有前驱结点

除根结点外,其余结点被分成M个互不相交的集合T1、T2、......、Tm,其中每一个集合Ti(1 <= i <= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱可以有0个或多个后继

树是递归定义

  • 任何一棵树,都可以被拆成一个根和n(n >= 0)棵子树组成。所以树一定会被归类为递归问题解决。那树的递归问题的返回条件就是,当遇到叶子的时候没有子树了,那么就开始返回。

那么什么是非线性的呢?

  • 简单点来说就是非线性就是逻辑结构上不是线性的,在逻辑结构上不是一个挨着一个,逻辑结构上就是一个倒挂的树。

我们首先要清楚的是数据元素间的相互关系具体应包括3个方面:

  • 数据的逻辑结构;
  • 数据的存储结构;
  • 数据的运算集合。

逻辑结构和物理结构:

  • 逻辑结构就是我们想象出来的;
  • 物理结构是在内存中实在存储结构

而在之前我们所学习的线性表、栈、对、字符串、数组以及广义表都属于线性结构。

这里我们注意一下,数组型结构物理结构与逻辑结构是一致的,在逻辑结构中数组存储是连续的,在物理结构中也是连续的。

但是链表就与数组不同。我们在平时画图的过程中,链表中具有箭头并且每个箭头指向下一个,依次往后,但是在实践中,可能并不是如此的。这些结构都是来自堆上面的。线性表在逻辑结构是连续的,通过每一个箭头,上一个指向下一个,但是在实际过程中并没有箭头,就是上一个存储下一个的地址。

树的相关概念

  • 链表中的节点都是有一个或者固定的指针,例如指向下一个节点的指针
  • 双向链表中,就是有指向前驱指针以及指向后继指针
  • 而在一个节点则是会有很多的指针,指向孩子们。

结点的度

结点的度:一个节点含有的子树的个数称为该结点的度;如A节点的度为6,B节点的度为0。

叶节点或终端结点

叶节点或终端结点:度为0的节点称为叶节点;如上图P/Q/H/I/B/C...等都为叶节点。 

非终端节点或分支节点

非终端节点或分支节点:度不为0的结点;如上图D/E/F/G/J都为非终端节点。

所以一个数可以看做是根、分支节点和叶节点的组合。

双亲节点或父节点

双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;如上图:A是B的父节点。

孩子节点或子节点

孩子节点或子节点:一个节点含有子树的根结点则称为该结点的子节点;如上图:B是A的孩子节点。

一个节点可能即是父节点又是子节点。

在这里,有些地方会叫做“双亲节点”。这里并不是有两个父节点,它仍然只有一个父亲,而是为了歧义译为“父母双亲”。

兄弟节点

兄弟节点:具有相同父节点的结点互称为兄弟节点;如上图:B、C是兄弟节点(亲兄弟)。

树的度

树的度:一棵树中,每个结点有个度,最大节点的度称为树的度;如上图:树的度为6。

树的层次

树的层次:从根开始定义起,根为第一层,根的子节点为第2层,以此类推;

树的高度或深度

树的高度或深度:树中节点的最大层次;如上图:层次为4;

数组的下标是从0开始的。

那么高度和深度是从0开始还是1开始?

  • 树的层次,并没有细致的规定,但是建议使用从1开始。

数组下标为什么从0开始呢?

  • 为了方便计算,a[ i ]等价于*( a + i )。

数组与指针的关系是什么?

  • 数组名是首元素的地址。a[ i ]等价于*( a + i ) 。

那么为什么树建议从1开始而不是从0开始呢?

堂兄弟节点

堂兄弟节点:双亲在同一层的节点互为堂兄弟;如上图:H、I互为兄弟节点。

节点的祖先

节点的祖先:从根到该节点所经分支上的所有节点;如上图:A是所有节点的祖先。

子孙

子孙:以某节点为根的子树中任一节点都称为该节点的子孙。如上图:所有节点都是A的子孙。

森林

森林:有m ( m > 0 ) 棵互不相交的树的集合称为森林;(在以后学习的并查集就是属于森林)。

树,简而言之就是数的概念+人类亲缘关系而进行描述的。

树与非树

树注意:

  • 子树之间不能相交的;
  • 除了根节点外,每个结点有且只有一个父节点;
  • 一棵N个结点的树有N-1条边。

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

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

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

相关文章

BTS-GAN:基于MRI和条件对抗性网络的乳腺肿瘤计算机辅助分割系统

BTS-GAN: Computer-aided segmentation system for breast tumor using MRI and conditional adversarial networks BTS-GAN&#xff1a;基于MRI和条件对抗性网络的乳腺肿瘤计算机辅助分割系统背景贡献实验方法Parallel dilated convolution module&#xff08;并行扩展卷积模块…

tp8 使用rabbitMQ(1)简单队列

php8.0 使用 rabbitmq 要使用 3.6版本以上的&#xff0c; 并且还要开启 php.ini中的 socket 扩展 php think make:command SimpleMQProduce //创建一个生产者命令行 php think make:command SimpleMQConsumer //创建一个消费者命令行 生产者代码 <?php declare (strict_ty…

为何设计师都在用这个原型样机资源网站?

谈论原型样机素材模板&#xff0c;这个话题对设计师来说如同老朋友一般熟悉。设计师们在创作完毕后&#xff0c;为了更淋漓尽致地展示他们的设计成果&#xff0c;通常会将其放置在真实的样机素材模板中。这种原型样机素材可以让设计作品迅速且清晰地呈现在真实环境中。找到一个…

java游戏制作-飞翔的鸟游戏

一.准备工作 首先创建一个新的Java项目命名为“飞翔的鸟”&#xff0c;并在src中创建一个包命名为“com.qiku.bird"&#xff0c;在这个包内分别创建4个类命名为“Bird”、“BirdGame”、“Column”、“Ground”&#xff0c;并向需要的图片素材导入到包内。 二.代码呈现 …

【每日一题】2216.美化数组的最少删除数-2023.11.21

题目&#xff1a; 2216. 美化数组的最少删除数 给你一个下标从 0 开始的整数数组 nums &#xff0c;如果满足下述条件&#xff0c;则认为数组 nums 是一个 美丽数组 &#xff1a; nums.length 为偶数对所有满足 i % 2 0 的下标 i &#xff0c;nums[i] ! nums[i 1] 均成立 …

【Vue】自定义指令

hello&#xff0c;我是小索奇&#xff0c;精心制作的Vue系列持续发放&#xff0c;涵盖大量的经验和示例&#xff0c;如果对您有用&#xff0c;可以点赞收藏哈~ 自定义指令 自定义指令就是自己定义的指令&#xff0c;是对 DOM 元素进行底层操作封装 ,程序化地控制 DOM&#xff…

【开源】基于Vue.js的高校实验室管理系统的设计和实现

项目编号&#xff1a; S 015 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S015&#xff0c;文末获取源码。} 项目编号&#xff1a;S015&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

2023 最新 PDF.js 在 Vue3 中的使用(长期更新)

因为自己写业务要定制各种 pdf 预览情况&#xff08;可能&#xff09;&#xff0c;所以采用了 pdf.js 而不是各种第三方封装库&#xff0c;主要还是为了更好的自由度。 一、PDF.js 介绍 官方地址 中文文档 PDF.js 是一个使用 HTML5 构建的便携式文档格式查看器。 pdf.js 是社区…

ABB机 器 人 操 作 培 训

目 录 1 培训手册介绍 ---------------------------------------------2 2 系统安全与环境保护 ---------------------------------------------3 3 机器人综述 ---------------------------------------------5 4 机器人示教 --------------------------------------------12…

自动解决IP冲突的问题 利用批处理更改末位IP循环+1直到网络畅通为止 解放双手 事半功倍

好久没出来写点什么了&#xff0c;难道今天有点时间&#xff0c;顺便把这两天碰到的问题出个解决方法吧。 这几天去客户那儿解决网络问题&#xff0c;因为客户的网络是固定的静态IP&#xff0c;因为没做MAC绑定&#xff0c;IP固定在本地电脑上&#xff0c;只要上不了网&#xf…

微信小程序面试题【100道】

文章目录 小程序面试题100问前言一、技术性问题1.有哪些参数传值的方法2.小程序修改数据值与Vue和React有什么差异3.如何实现下拉刷新与上拉加载4.bindtap和catchtap的区别是什么5.小程序有哪些导航API&#xff0c;它们各自的应用场景与差异区别是什么6.小程序中如何使用第三方…

python爬虫扣代码案例:某智能商业分析平台

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、找出需要加密的参数 js运行 atob(‘aHR0cHM6Ly93d3cucWltYWkuY24vcmFuaw’) 拿到网址&#xff0c;F12打开调试工具&#…

拆解:淘宝客新玩法之微信淘礼金创建怎么做

最近看到一种新的淘宝客玩法&#xff0c;迫不及待的想分享给大家。微信公众号查券大家都不陌生&#xff0c;也有不少人都在做这个。最近看到有人在做微信公众号创建淘礼金。之所以说这个玩法新是因为目前大多数淘客还在做返利。返利有周期长、提现有门槛等痛点。 微信公众号创建…

BW4HANA 从头到脚 概念详解 ---- 持续更新中

1. 理解BW4HANA是干嘛的 好歹干了这么久的活了&#xff0c;从当初的啥也不懂到现在感觉啥都知道点&#xff0c;虽然知道的有限&#xff0c;但是也不是小白。渐渐的也知道了SAP开发的一些逻辑。本来咱是想当个BW的大牛的。但是现在感觉这条船要沉了是怎么回事。个人才稍微摸到点…

信息系统的安全保护等级的五个级别

信息系统的安全保护等级分为五级&#xff1a;第一级为自主保护级、第二级为指导保护级、第三级为监督保护级、第四级为强制保护级、第五级为专控保护级。 法律依据&#xff1a;《信息安全等级保护管理办法》第四条 信息系统的安全保护等级分为以下五级&#xff1a;   &#…

Python + Docker 还是 Rust + WebAssembly?

在不断发展的技术世界中&#xff0c;由大语言模型驱动的应用程序&#xff0c;通常被称为“LLM 应用”&#xff0c;已成为各种行业技术创新背后的驱动力。随着这些应用程序的普及&#xff0c;用户需求的大量涌入对底层基础设施的性能、安全性和可靠性提出了新的挑战。 Python 和…

基于单片机直流电机调速(proteus仿真+源程序)

一、系统方案 1、本设计采用这51单片机作为主控器。 2、转速值送到液晶1602显示。 3、按键设加减速&#xff0c;开始暂停、正反转。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 en0; rw0; write_com(0x01); //lcd初始化 write_com(0x38)…

如何提高图片转excel的效果?(软件选择篇)

在日常的工作中&#xff0c;我们常常会遇到一些财务报表类的图片需要转换成可编辑的excel&#xff0c;但是&#xff0c;受各种条件的限制&#xff0c;常常只能通过手工录入这种原始的方式来实现&#xff0c;随着人工智能、深度学习以及网络技术的发展&#xff0c;这种原始的录入…

机器学习中的特征选择:方法和 Python 示例

布拉加德什桑达拉拉詹 一、说明 特征选择是机器学习流程中至关重要且经常被低估的步骤。它涉及从数据集中的原始特征集中选择最相关的特征&#xff08;输入变量或属性&#xff09;的子集。特征选择的重要性怎么强调都不为过&#xff0c;因为它直接影响机器学习模型的质量、效率…

网络知识学习(笔记二)

ios模型规定的网络模型一共有7层&#xff0c;但是实际使用过程中&#xff0c;4层的TCP/IP模型是经常使用的&#xff0c;网络知识学习笔记里面也是基于4层TCP/IP模型进行分析的&#xff0c;前面已经讲了&#xff1a;&#xff08;1&#xff09;物理层&#xff0c;&#xff08;2&a…