树Tree

news2024/11/28 0:38:24

文章目录

  • 属性
  • 二叉树Binary Tree
  • 应用
  • 二叉树
    • 严格二叉树
    • 完全二叉树
      • 满二叉树Perfect Binary Tree
    • 二叉搜索树Binary Search Tree
        • array
        • Linked LIst
        • Array(sortrd)
        • Binary Search Tree(balanced)
    • 性质
    • 实现
      • dynamically
      • arrays数组

具有层级结构
一对多
Node结点
root根
Children孩子
Parent双亲
Sibling兄弟 有同一个双亲
leaf 叶子 没有孩子
结点的层次(level):从根结点算起,根为第一层,它的孩子为第二层……
结点的度(degree):结点拥有的子树数
树的度:一棵树中最大的结点度数

属性

可以递归定义,调用自己,孩子又是一棵树的根节点。

有n个结点node,那么有n-1个边edge
深度 Depth 从根到x的edge的数目,根的Depth为0,国内根的深度为1
高度Height 从x到叶子结点的最多边的数目,国内高度要加1
树的高度是根结点的高度
结点的度(degree):结点拥有的子树数

二叉树Binary Tree

最常见的实现,结点三个域,左孩子,右孩子,数据域。

应用

存储天然具备层级结构的数据
文件和文件夹
组织数据
让集合快速查找 删除等
Tire树 动态的拼写检查
network Routing algorithm网络路由算法

二叉树

一个最多有两个孩子

严格二叉树

每个结点有0或两个孩子

完全二叉树

除了最后一层都填满,并且最后一层的结点若没有完全填充,那么向左对齐

满二叉树Perfect Binary Tree

最后一层也满,所有的都满,是完全二叉树的特例

二叉搜索树Binary Search Tree

用数目数据结构来存储可修改的集合
这样要求快速查找,插入,删除

array

end标记结尾,
search 从开头到结尾,故O(n)
insert 若插入末尾 O(1),若满,O(n)
remove O(n)

Linked LIst

搜索O(n)
头部插入O(1)
删除O(n)

Array(sortrd)

查找的话,O(n)时间复杂度太大。如果排序了
的话,可以使用二分查找。所以在插入和删除的时候,我们就要对这个数组排好序。排序后的数组查找很方便,但是插入和删除依旧要O(n)
在这里插入图片描述

Binary Search Tree(balanced)

a balanced tree (对于任何结点,左右子树的高度差不大于1)
对于每一个结点,所有(故下图16大于15,不是BST)左子树的结点值都比该结点上的值小或等于,右子树上的结点值比该节点的值大
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

递归构建二叉树

在这里插入图片描述
判断该数字在二叉树中是否存在
在这里插入图片描述
在这里插入图片描述
笔者认为这里的插入函数仅仅能满足每个结点的左节点小于等于该结点,右节点大于该节点。而不能满足二叉搜索树中的所有要求

性质

在非空二叉树中,第i层上至多有2i-1个结点(i≧1)
性质2:深度为k的二叉树至多有2k-1个结点(k≧1)( 2 0+21+ …+2k-1=2k-1 )
对任何一棵二叉树,若其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1
n个结点的完全二叉树深度为:㏒以二为底n向下取整+1。

实现

dynamically

最常见的实现,结点三个域,左孩子,右孩子,数据域。

arrays数组

对于完全二叉树上编号为i的结点元素存储在一维数组的下标值为i-1的分量中。
对于一般的二叉树,将其每个结点与完全二叉树上的结点相对照,存储在一维数组中。数组下标为i,对应二叉树结点的标号为i+1(国内,国外对应的还是i),那么左孩子的索引是2i+1,右孩子的索引是2i+2,辅助记忆(记忆根和左右结点的关系
国外版

在这里插入图片描述

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

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

相关文章

Shell脚本 if语句

条件测试: $? 返回码 判断命令或者脚本是否执行成功(最近的一条) 0 true 为真就是成功 成立 非0 false 失败或者异常 test命令 可以进行条件测试 然后根据的是返回值来判断条件是否成立。 -e 测试目录或者文件是否存在 exist -d 测试…

LM2576系列3A开关型DCDC BUCK降压稳压器

前言: 老款DCDC,使用历史几十年了,今天设计仍然使用这个DCDC的,是不合适的。主要缺点是开关频率较低只有几十Khz,导致需要使用较大感量的功率电感,这样的电感价格较高,且占用PCB空间较大&#…

理解数学概念——线性(线性性)

1. 线性相关词汇的词源 1.1 单词“line”的词源 这个单词是古英语“line”和古法语“ligne”二者的融合。在古英语中,“line”的词义为“缆绳,绳索;一系列,行,字母行;规则,方向(cable, rope; s…

网工内推 | 深信服、中软国际技术支持工程师,最高13k*13薪

01 深信服 🔷招聘岗位:远程技术支持工程师 🔷任职要求: 一、专业能力和行业经验: ①具备友商同岗位工作经验1.5年以上,具备良好的分析和判断能力,有独立问题处理思路,具备常见协…

如何保证数据库和缓存的一致性

背景:为了提高查询效率,一般会用redis作为缓存。客户端查询数据时,如果能直接命中缓存,就不用再去查数据库,从而减轻数据库的压力,而且redis是基于内存的数据库,读取速度比数据库要快很多。 更新…

Sublime Text 4 - 前端代码编辑的卓越之选

Sublime Text 4 是一款备受赞誉的前端代码编辑神器,无论是在 Mac 系统还是 Windows 系统上,都展现出了其独特的魅力和强大的功能。 Sublime Text 4 拥有简洁而直观的用户界面,让开发者能够快速上手并沉浸于代码编写的过程中。它提供了高度可…

Qwen2 阿里最强开源大模型(Qwen2-7B)本地部署、API调用和WebUI对话机器人

阿里巴巴通义千问团队发布了Qwen2系列开源模型,该系列模型包括5个尺寸的预训练和指令微调模型:Qwen2-0.5B、Qwen2-1.5B、Qwen2-7B、Qwen2-57B-A14B以及Qwen2-72B。对比当前最优的开源模型,Qwen2-72B在包括自然语言理解、知识、代码、数学及多…

乡镇联盟一镇一码联合创始人第一届第二次研讨会在中山圆满落幕

乡镇联盟一镇一码联合创始人第一届第二次研讨会在中山圆满落幕 近日,由“乡镇联盟一镇一码”项目的联合创始人余向强先生亲自主持的第一届第二次研讨会在中山成功举行。此次研讨会汇聚了来自全国各地的乡镇代表、行业专家及联盟核心成员,共同探讨乡镇发…

MySql 报错之 Truncated incorrect DOUBLE value: ‘111-7357916-9889033‘

1. 背景 查询sql时,出现报错:Truncated incorrect DOUBLE value: ‘111-7357916-9889033’ 2. 问题可能原因 2.1 数据类型不匹配 可能错误地将一个本应作为字符串处理的列或值用于了需要数值类型的计算或比较。检查SQL语句,确保数值类型…

【OpenGL学习】OpenGL不同版本渲染管线汇总

文章目录 一、《OpenGL编程指南》第6版/第7版的渲染管线二、《OpenGL编程指南》第8版/第9版的渲染管线 一、《OpenGL编程指南》第6版/第7版的渲染管线 图1. OpenGL 2.1、OpenGL 3.0、OpenGL 3.1 等支持的渲染管线 二、《OpenGL编程指南》第8版/第9版的渲染管线 图2. OpenGL …

威胁预警 | Anatsa 银行木马被下载超过数万次

最近,研究人员发现 Anatsa 银行木马的传播有所抬头。这种复杂的恶意软件欺骗受害者在不知不觉中安装后,通过全球的金融应用程序来窃取敏感凭据和财务信息。攻击者通过多种技术拦截和收集数据。 概述 Anatsa 是已知的安卓银行木马,针对全球超…

C语言调用so/dll动态库

文章目录 windowslinux C语言调用动态链接库 windows C语言调用windows下的动态库dll; 待实现 linux C语言调用linux下的动态库so; 准备C代码&#xff0c;并编译为so base.c #include <stdio.h>int funcBase(){printf("func base is running...");return …

每日5题Day23 - LeetCode 111 - 115

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeN…

小公司要求真高

大家好&#xff0c;我是白露啊。 最近看到一个爽文帖&#xff0c;标题就是——“小公司要求真高”。 事情是这样的&#xff0c;一家的小公司在拿到简历之后&#xff0c;HR直接对楼主说&#xff1a;“你不合适&#xff0c;简历不行。” 言外之意就是嫌弃简历单薄&#xff0c;看…

车载网络安全指南 网络安全框架(二)

返回总目录->返回总目录<- 目录 一、概述 二、网络安全组织管理 三、网络安全活动 四、支撑保障 一、概述 汽车电子系统网络安全活动框架包含汽车电子系统网络安全活动、组织管理以及支持保障。其中,网络安全管理活动是框架的核心,主要指汽车电子系统生命周期各阶段…

WebGL开发时尚设计系统

开发一个基于WebGL的时尚设计系统可以为用户提供一个互动、实时的3D体验&#xff0c;允许他们设计和试穿虚拟服装。这个系统可以广泛应用于时尚设计、电子商务、虚拟试衣间等领域。以下是开发此系统的主要步骤和关键技术。北京木奇移动技术有限公司&#xff0c;专业的软件外包开…

代码小浣熊 - 软件智能研发助手

介绍 代码小浣熊是一款基于商汤大语言模型的软件智能研发助手。它利用先进的自然语言处理和人工智能技术&#xff0c;为软件开发者提供从需求分析、架构设计到代码编写、软件测试等全流程的智能支持。无论是专业的软件工程师&#xff0c;还是编程初学者&#xff0c;代码小浣熊…

数据结构——02-算数表达式-栈-实验题目分享

一、实验题目 算数表达式计算&#xff1a; 设计算法根据用户输入的合法表达式计算结果并显示出来 表达式中的符号为、-、*、/、&#xff08;、&#xff09; 表达式中数字为整数 二、实验环境 Windows 11 Visual Studio Code &#xff08;总体代码在最后&#xff09; 三…

计算机视觉基础课程知识点总结

图像滤波 相关: 核与图像同向应用&#xff0c;不翻转。 卷积: 核在应用前翻转&#xff0c;广泛用于信号处理和深度学习&#xff08;现在常说的二维卷积就是相关&#xff09;。 内积: 向量化的点积操作&#xff0c;是相关和卷积的一部分。 模板匹配&#xff1a;通过在图像中…

python数据分析-笔记本内存和价格预测分析

一、背景和研究意义 计算机已成为现代社会不可或缺的工具&#xff0c;广泛应用于个人生活、学术研究和商业领域。随着科学技术的飞速发展&#xff0c;计算机不仅在性能上不断突破&#xff0c;在种类和品牌上也呈现出多样化和差异化。无论是办公、娱乐、学习还是创作&#xff0…