数据结构与算法之树结构基础
目录
- 为什么要使用树结构
- 树结构基本概念
- 树的种类
- 树的存储与表示
- 常见的一些树的应用场景
为什么要使用树结构
线性结构中不论是数组还是链表,他们都存在着诟病;比如查找某个数必须从头开始查,消耗较多的时间。使用树结构,在插入和查找的性能上相对都会比线性结构要好
树结构基本概念
示意图
1、根节点:最顶上的唯一的一个;如:A
2、双亲节点:子节点的父节点就叫做双亲节点;如A是B、C、D的双亲节点,B是E、F的双亲节点
3、子节点:双亲节点所产生的节点就是子节点
4、路径:从根节点到目标节点所走的路程叫做路径;如A要访问F,路径为A-B-F
5、节点的度:有多少个子节点就有多少的度(最下面的度一定为0,所以是叶子节点)
6、节点的权:在节点中所存的数字
7、叶子节点:没有子节点的节点,就是没有下一代的节点;如:E、F、C、G
8、子树:在整棵树中将一部分看成也是一棵树,即使只有一个节点也是一棵树,不过这个树是在整个大树职中的,包含的关系
9、层:就是族谱中有多少代的人;如:A是1,B、C、D是2,E、F、G是3
10、树的高度:树的最大的层数:就是层数中的最大值
11、森林:多个树组成的集合
树的种类
无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树;
有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;
- 二叉树:每个节点最多含有两个子树的树称为二叉树;
- 完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树,其中满二叉树的定义是所有叶节点都在最底层的完全二叉树;
- 平衡二叉树(AVL树):当且仅当任何节点的两棵子树的高度差不大于1的二叉树;
- 排序二叉树(二叉查找树(英语:Binary Search Tree),也称二叉搜索树、有序二叉树);
- 霍夫曼树(用于信息编码):带权路径最短的二叉树称为哈夫曼树或最优二叉树;
- B树:一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多余两个子树。
树的存储与表示
顺序存储:将数据结构存储在固定的数组中,然在遍历速度上有一定的优势,但因所占空间比较大,是非主流二叉树。二叉树通常以链式存储。
链式存储:
由于对节点的个数无法掌握,常见树的存储表示都转换成二叉树进行处理,子节点个数最多为2
常见的一些树的应用场景
1、xml,html等,那么编写这些东西的解析器的时候,不可避免用到树
2、路由协议就是使用了树的算法
3、mysql数据库索引
4、文件系统的目录结构
5、所以很多经典的AI算法其实都是树搜索,此外机器学习中的decision tree也是树结构
数据结构与算法之树结构基础相关推荐
- Interview之AI:人工智能领域岗位求职面试—人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础、ML算法简介、DL算法简介)来理解技术交互流程
Interview之AI:人工智能领域岗位求职面试-人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础.ML算法简介.DL算法简介)来理解技术交互流程 目录 一.A ...
- 数据结构和算法_零基础入门01
数据结构和算法_零基础入门01 一.数据结构是什么? 逻辑结构.物理结构 二.算法 算法的五个基本特征 算法设计的要求 b站学习小甲鱼的数据结构与算法,自留笔记. 程序设计=数据结构+算法 一.数据结 ...
- 【超全汇总】学习数据结构与算法,计算机基础知识,看这篇就够了【ZT帅地】2020-3-7
https://blog.csdn.net/m0_37907797/article/details/104029002 由于文章有点多,并且发的文章也不是一个系列一个系列发的,不过我的文章大部分都是围 ...
- 【数据结构与算法】图论基础与图存储结构
前言 由于后续更新好几篇文章都涉及到 图 这种数据结构,因此打算先普及一下 图 的相关理论支持,如果后面的相关内容有些点不太容易理解,可以查阅此篇文章.本文不建议一口气阅读完毕,可以先浏览一遍,在后续 ...
- 算法随笔 — 树结构基础 — 并查集
并查集定义 并查集是一种用来解决 连通性 的数据结构,抽象的方向不同会导致实现方式的不同. 我们也可以用并查集来表示集合的关系. 1.快速查找(quick-find) 如图所示,我们可以通过给元素加颜 ...
- 数据结构与算法一 - 二叉树基础
前言 树是数据结构中的重中之重,尤其以各类二叉树为学习的难点.一直以来,对于树的掌握都是模棱两可的状态,现在希望通过写一个关于二叉树的专题系列.在学习与总结的同时更加深入的了解掌握二叉树.本系列文章将 ...
- 计算机基础知识数据结构与算法,(计算机基础知识)[数据结构与算法] 图
第六章 图 6.1 图的定义和基本术语 图: G=(V,E) Graph = (Vertex, Edge) V: 顶点(数据元素)的有穷非空集合 E: 边的有穷集合 完全图: 任意两个点都有一条边相连 ...
- 数据结构与算法详解(含算法分析、动图图解、Java代码实现、注释解析)
数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算 数据结构和算法的关系: 程序 = 数据结构 + 算法 数据结构是算法的基础, 换言之,想要学好算法,需要把数 ...
- 数据结构与算法——从零开始学习(一)基础概念篇
系列文章 第一章:基础知识 第二章:线性表 第三章:栈和队列 第四章:字符串和数组 第五章:树和二叉树 第六章:图 第七章:排序算法 前言 数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合 ...
最新文章
- Web 2.0技术对SEO的影响
- 计算机应用基础怎么教作业,北京语言大学网络教育2017春计算机应用基础作业(1)及答案...
- 在线图表编辑工具 draw.io 10.6.5 版本发布
- java后端怎么返回音频流_Java语言中的IO流read()方法返回值为什么是int而不是byte?...
- 【Janino】Janino框架初识与使用教程
- DNS练习之反向解析
- 深入理解ThreadLocal变量的功能和使用
- poj 1872 A Dicey Problem (bfs+WordFinal题)
- 习惯性的对自己没信心,其实没想到自己已经变强大了。
- 构建samba文件共享服务器
- Cron在线表达式生成器
- 【稀饭】react native 实战系列教程之影片数据获取并解析
- 闲鱼一直不确认收货怎么办?
- 学习笔记:Self-Paced Learning
- python print 格式化输出
- 高德地图 调用天地图 WMTS 服务
- 如何查看手机登录IP地址
- 孙溟㠭篆刻作品《叶》
- Scratch软件编程等级考试四级——20210320
- Visual Studio 高亮引用颜色设置
热门文章
- 自然语言处理(5)——语言模型
- 《Optimising the selection of samples for robust lidar camera calibration》论文解读
- rk3399平台电量计cw2015驱动分析
- 利用vbox安装服务器操作系统,在Linux服务器上使用Vbox安装虚拟机(示例代码)
- uboot和系统移植2(uboot常用命令)
- NLP 论文领读|无参数机器翻译遇上对比学习:效率和性能我全都要!
- php百度指数查询,根据社会保险法律制度规定,经劳动能力鉴定委员会鉴定,评定伤残等级的工伤职工,享受的伤残待遇包括( )。...
- arduino与hcsr04_超声波传感器HC-SR04和Arduino进行距离计算
- openstack-创建多网络虚机
- autojs 微信 布局分析不到位