数据结构 --树

news/2024/11/8 12:52:28/文章来源:https://www.cnblogs.com/hui-xiang/p/18534165

定义

树是n(n>=0)个结点的有限集。n=0时,称为空树。在任意一棵树非空树中应满足:

(1) 有且仅有一个特定的称为根 (root) 的结点

(2) 当时,其余结点可分为个互不相交的有限集,其中每一个集合本身又是一颗树,并且称为根的子树。

基本概念

结点的度:一个结点拥有的子树的数目

叶子结点:度为0的结点

树的度:树内各结点的度的最大值

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

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

有序树和无序树:树中结点的各子树从左到右是有次序的,不能互换,称该树为有序树,否则称为无序树

路径和路径长度:路径是由树中的两个结点之间的结点序列构成的。而路径长度是路径上所经过的边的个数

树的类型

二叉树

二叉树的特点包括:

(1)每个结点最多有两个子结点,分别称为左子结点和右子结点。

(2)左子树和右子树都是二叉树,它们本身也可以是空树。

(3)二叉树的结点结构包含一个数据元素和指向左右子树的指针。

二叉树和度为2的树

1.度为2的树至少有一个结点度数为2,而二叉树可以为空

2.度为2的树不区分左右子树

二叉排序树(二叉查找树/二叉搜索树)

(1)若左子树不空,则左子树上所有结点的值均小于它的 根结点的值;

(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

(3)左,右子树也分别为二叉排序树;

平衡二叉树(AVL树)

平衡二叉树特点包括:

- 左子树和右子树的高度之差的绝对值小于等于1

- 左子树和右子树也是平衡二叉树

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

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

相关文章

人工智能--自然语言处理简介

上一篇:《人工智能模型训练中的数据之美——探索TFRecord》 序言:自然语言处理(NLP)是人工智能中的一种技术,专注于理解基于人类语言的内容。它包含了编程技术,用于创建可以理解语言、分类内容,甚至生成和创作人类语言的新作品的模型。在接下来的几章中,我们将会探讨这…

精选 Top10 开源调度工具,解锁高效工作负裁自动化

在大数据和现代 IT 环境中,任务调度与工作负载自动化(WLA)工具是优化资源利用、提升生产效率的核心驱动力。随着企业对数据分析、实时处理和多地域任务调度需求的增加,这些工具成为关键技术。本文将介绍当前技术发展背景下的Top 10开源任务调度工具,并探讨它们在大数据和工…

五分钟入门双拼!

从零开始学双拼的第一篇:概述‍这是从零开始学双拼的第一篇:概述 双拼的原理 如果你使用全拼,想要完整敲出一个字的读音,需要敲出这个字拼音的每个字母。 虽然简拼能简化一点步骤,但除非是很常见的成语、俗语,否则重码率很高,选词很困难。 有没办法提高效率呢?有的,那…

SVN提交日志模板设置

前言:每次提交时都要手动输入很多固定日志信息,或者在最近中选择信息记录会比较麻烦,通过这个设置可以在每次提交时,自动填充日志信息 设置步骤 1:先进入你想要提交svn自动设置模板时的目录(例如策划同学进入到Table表格提交记录,程序同学进入到代码提交目录,美术同学进…

ubuntu:旧版本配置apt源(ubuntu 21.10)

一,旧版本ubuntu上的apt源不能用了 # apt-get update 忽略:1 http://mirrors.aliyun.com/ubuntu hirsute InRelease 忽略:2 http://mirrors.aliyun.com/ubuntu hirsute-security InRelease 忽略:3 http://mirrors.aliyun.com/ubuntu hirsute-updates InRelease 忽略:4 http://…

医药企业数据治理,从何入手?一文讲清楚!

在医药行业,随着企业信息化进程的加速推进,ERP、CRM等系统纷纷引入业务流程。这些系统的不断增加,虽提升了业务管理的精细度,但也带来了数据的分散与冗余问题,数据治理因此成为企业面临的关键挑战。那么,医药企业的数据治理该如何入手?本文将为您逐一解析。 1. 数据标准…

【SpringBoot开发】 文件上传 (秒传、断点续传、分片上传)

原创 Java技术前沿引言 文件上传在软件开发项目中极为常见,涵盖了图片、音频、视频及各类文档的上传需求。对于小型文件,简单的Form表单上传机制通常足以应对。然而,当面对体积庞大的文件,如超过1GB的文件,或用户处于网络条件不佳的环境下时,传统的上传方式便显得力不从心…

数据采集与融合第三次作业

码云仓库地址 https://gitee.com/sun-jiahui22/crawl_project作业1仓库地址 https://gitee.com/sun-jiahui22/crawl_project/tree/master/作业3/实验3.1作业2的仓库地址 https://gitee.com/sun-jiahui22/crawl_project/tree/master/作业3/实验3.2作业3的仓库地址 https://gitee…

【java编程】深入浅出JVM(四):类文件结构

原创 菜菜的后端私房菜Java文件编译成字节码文件后,通过类加载机制到Java虚拟机中,Java虚拟机能够执行所有符合要求的字节码,因此无论什么语言,只要能够编译成符合要求的字节码文件就能够被Java虚拟机执行. Java虚拟机和字节码是语言、平台无关性的基石. 本篇文章将深入浅出…

HyperWorks实体网格划分

实体网格剖分 在 HyperMesh 中,使用 Solid Map 功能进行实体网格剖分。该面板如下图所示:图 4-4 Solid Map 面板 通过 Solid Map Panel 进行实体网格剖分: • 通过主菜单栏选择 3D 页面 > solid map 。 • 通过下拉式菜单选择 Mesh > create > Solid Map。 Solid Ma…

VS 2022 不支持 .NET Framework 4.5 项目解决办法(Visual Studio 2022)

VS 2022 不支持 .NET Framework 4.5 项目解决办法(Visual Studio 2022) 概述 最近 C# 开发工具 Visual Studio 升级到了 2022,打开速度快了很多,开发体验也舒服很多。只是使用过程中遇到了一个比较尴尬的问题:默认Visual Studio 2022 不再支持安装 .NET Framework 4.5 组件…

新建流程隐藏指定流程(建模+api+ecode)

ecode代码 `// 功能总开关 let enable = true; let list=[]; $.ajax({ type:GET, url:/api/xiangxin/Multiple/HideProcess, success:function(res){ res.data.map((i)=>{ // console.log(lc :, i.lc); list.push(i.lc); }) } }) let pd; //判断是否是新建流程页面 ecodeSDK…