数据结构之树和二叉树定义

数据结构之树和二叉树定义

  • 1、树的定义
  • 2、树的基本概念
  • 3、二叉树的定义

  数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储结构及其相应的操作方法,为提高利用计算机解决问题的效率服务。
  数据结构是指数据元素的集合及元素间的相互关系和构造方法。元素之间的相互关系是数据的 逻辑结构,数据元素及元素之间关系的存储称为 存储结构(或物理结构)。数据结构按照逻辑关系的不同分为 线性结构非线性结构两大类,其中,非线性结构又可分为树结构和图结构。
  树结构是一种非常重要的非线性结构,该结构中的一个数据元素可以有两个或两个以上的直接后继元素,树可以用来描述客观世界中广泛存在的层次结构关系。

1、树的定义

  树是 n(n≥0)个结点的有限集合,当 n=0 时称为空树。在任一非空树(n>0)中,有且仅有一个称为根的结点;其余结点可分为 m(m≥0)个互不相交的有限子集 T1,T2,···,Tm,其中,每个 Ti 又都是一棵树,并且称为根结点的子树。
  树的定义是递归的,它表明了树本身的固有特性,也就是一棵树由若干棵子树构成,而子树又由更小的子树构成。
  该定义只给出了树的组成特点,若从数据结构的逻辑关系角度来看,树中元素之间有严格的层次关系。对于树中的某个结点,它最多只和上一层的一个结点(即其双亲结点) 有直接的关系,而与其下一层的多个结点(即其孩子结点)有直接关系,如下图所示。通常,凡是分等级的分类方案都可以用具有严格层次关系的树结构来描述。
在这里插入图片描述

2、树的基本概念

  (1)双亲、孩子和兄弟。结点的子树的根称为该结点的孩子;相应地,该结点称为其子结点的双亲。具有相同双亲的结点互为兄弟。
  (2) 结点的度。一个结点的子树的个数记为该结点的度。例如,上图中,A 的度为 3,B的度为2,C的度为 0,D的度为 1。
  (3) 叶子结点。叶子结点也称为终端结点,指度为0的结点。例如,上图 中,E、F、C、G都是叶子结点。
  (4)内部结点。度不为 0的结点,也称为分支结点或非终端结点。除根结点以外,分支结点也称为内部结点。例如,上图中,B、D 都是内部结点。
  (5)结点的层次。根为第一层,根的孩子为第二层,依此类推,若某结点在第 i 层,则其孩子结点在第 i+1 层。例如,上图 中,A 在第1层,B、C、D在第2层,E、F 和G在第3层。
  (6)树的高度。一棵树的最大层数记为树的高度(或深度)。例如,上图所示树的高度为 3。
  (7)有序(无序)树。若将树中结点的各子树看成是从左到右具有次序的,即不能交换,则称该树为有序树,否则称为无序树。

3、二叉树的定义

  二叉树是 n(n≥0)个结点的有限集合,它或者是空树(n=0),或者是由一个根结点及两棵不相交的且分别称为左、右子树的二叉树所组成。可见,二叉树同样具有递归性质。
  需要特别注意的是,尽管树和二叉树的概念之间有许多联系,但它们是两个不同的概念。树和二叉树之间最主要的区别是:二叉树中结点的子树要区分左子树和右子树,即使在结点只有一棵子树的情况下,也要明确指出该子树是左子树还是右子树。另外,二叉树结点最大度为2,而树中不限制结点的度数,如下图所示。
在这里插入图片描述

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

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

相关文章

【计算机网络】【Python】【练习题】【新加坡南洋理工大学】【Computer Control Network】

一、题目描述 该题目描述一个网络中数据包交换(Packet Switching)的例子。题目如下: 二、问题解答(使用Python) Q1:如何求出0.0004这个值? (1)、公式推导过程&#xf…

LeetCode 热题 100 | 双指针(下)

目录 42. 接雨水 1 方法一:我的方法 2 方法二:动态规划 3 方法三:双指针 菜鸟做题第一周,语言是 C 42. 接雨水 1 方法一:我的方法 Warning:这是我的智障做法,请勿模仿 我只能说它教会…

深度解析Python关键字:掌握核心语法的基石(新版本35+4)

目录 关键字 keyword 关键字列表 kwlist softkwlist 关键字分类 数据类型 True、False None 运算类型 and、or、not in is 模块导入 import 辅助关键字 from、as 上下文管理 with 占位语句 pass 流程控制 if、elif、else for while break、continue…

20240117在本地机器识别OCR法语电影的字幕效果PK

20240117在本地机器识别OCR法语电影的字幕效果PK 2024/1/17 11:18 1959 - Jirai Cracher Sur Vos Tombes [Gast, Vian].avi https://www.pianbar.net//drama/52892.html 1959[我唾弃你的坟墓]Jirai cracher sur vos tombes[BT下载/迅雷下载] magnet:?xturn:btih:7c9c99d9d048…

系统配置dns主从服务器

一、准备两台主机,区分主从 二、完全区域传送 1、主DNS服务器配置 #安装相关的包 [rootoula1 ~]# yum install bind -y#关闭防火墙 [rootoula1 ~]# systemctl stop firewalld [rootoula1 ~]# setenforce 0#修改配置主文件 [rootoula1 ~]# vim /etc/named.conf opt…

如何快速打开github

作为一个资深码农,怎么能不熟悉全球最大的同性交友社区——github呢,但头疼的是github有时能打开,有时打不开,这是怎么回事? 其实问题出在github.com解析DNS上,并不是需要FQ。下面提供一个方法,…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用相机日志跟踪功能(C#) Baumer工业相机Baumer工业相机NEOAPI SDK和短曝光功能的技术背景Baumer工业相机通过NEOAPI SDK使用相机日志跟踪功能1.引用合适的类文件2.通过NEOAPI SDK使用相机日志跟踪功能3.通…

C#,入门教程(30)——扎好程序的笼子,错误处理 try catch

上一篇: C#,入门教程(29)——修饰词静态(static)的用法详解https://blog.csdn.net/beijinghorn/article/details/124683349 程序员语录:凡程序必有错,凡有错未必改! 程序出错的原因千千万&…

Centos 8 安装 Elasticsearch

简介:CentOS 8是一个基于Red Hat Enterprise Linux(RHEL)源代码构建的开源操作系统。它是一款稳定、可靠、安全的服务器操作系统,适合用于企业级应用和服务的部署。CentOS 8采用了最新的Linux内核和软件包管理系统,提供…

ThinkPad T14/T15/P14s/P15s gen2电脑原厂Win10系统镜像 恢复笔记本出厂时预装自带OEM系统

lenovo联想原装出厂Windows10系统,适用型号: ThinkPad T14 Gen 2,ThinPad T15 Gen 2,ThinkPad P14s Gen 2,ThinkPad P15s Gen 2 (20W1,20W5,20VY,20W7,20W0,20W4,20VX,20W6) 链接&#xff1…

Django从入门到精通(二)

目录 三、视图 3.1、文件or文件夹 3.2、相对和绝对导入urls 3.3、视图参数requests 3.4、返回值 3.5、响应头 3.6、FBV和CBV FBV 四、静态资源 4.1、静态文件 4.2、媒体文件 五、模板 5.1、寻找html模板 5.2、模板处理的本质 5.3、常见模板语法 5.4、内置模板函…

day25 组合总和Ⅲ 电话号码的字母组合

题目1:216 组合总和Ⅲ 题目链接:216 组合总和Ⅲ 题意 找出相加之和为n的k个数的组合 数字只可使用1~9之间的数(包括 1 9)且每个数字只能使用1遍 题目中有两个限制条件:1)k个数 2)k个…

C#使用DateTime.Now静态属性动态获得系统当前日期和时间

目录 一、实例 1.源码 2.生成效果 二、相关知识点 1.Thread类 (1)Thread.Sleep()方法 (2)Thread(ThreadStart) (3)IsBackground (4)Invoke( ) 2.CreateGrap…

༺༽༾ཊ—Unity之-01-单例模式—ཏ༿༼༻

在游戏开发过程中,我们会创建各种各样的类,再用new生成实例,有些时候我们需要这个类在整个游戏中是唯一出现的,比如一些管理器比如声音管理器等,没必要创建很多实例,就算有很多模块需要各种声音功能&#x…

为什么国产操作系统是基于linux研发的呢?

为什么国产操作系统是基于linux研发的呢? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!&am…

数字IC笔试题——门控时钟与控制信号电平、与门门控、或门门控、上升沿门控、下降沿门控

门控时钟问题。 (华为-2019-芯片-数字-34) 从后端设计考虑,在必须使用门控时钟的时候,需要遵循一个原则:门控时钟的输出只能跟着时钟信号进行跳变,而不能跟着控制信号进行跳变,也就是说对于用N…

“GPC爬虫池有用吗?

作为光算科技的独有技术,在深入研究谷歌爬虫推出的一种吸引谷歌爬虫的手段 要知道GPC爬虫池是否有用,就要知道谷歌爬虫这一概念,谷歌作为一个搜索引擎,里面有成百上千亿个网站,对于里面的网站内容,自然不可…

【linux驱动】用户空间程序与内核模块交互-- IOCTL和Netlink

创建自定义的IOCTL(输入/输出控制)或Netlink命令以便用户空间程序与内核模块交互涉及几个步骤。这里将分别介绍这两种方法。 一、IOCTL 方法 1. 定义IOCTL命令 在内核模块中,需要使用宏定义你的IOCTL命令。通常情况下,IOCTL命令…

IDEA在重启springboot项目时没有自动重新build

IDEA在重启springboot项目时没有自动重新build 问题描述 当项目里面某些依赖或者插件更新了,target的class文件没有找到,导致不是我们需要的效果。 只能手动的清理target文件,麻烦得很 , 单体项目还好说,一次清理就…

pycharm import torch

目录 1 安装 2 conda环境配置 3 测试 开始学习Pytorch! 1 安装 我的电脑 Windows 11 Python 3.11 Anaconda3-2023.09-0-Windows-x86_64.exe cuda_11.8.0_522.06_windows.exe pytorch (管理员命令行安装) pycharm-community-2023.3.2.exe 2 c…