[DS+Algo] 009 树的介绍
1. 树的概念
- 每个结点(节点)有 0 个或多个子结点
- 没有父结点的结点称为根结点
- 每一个非根结点有且只有一个父结点
- 除了根结点外,每个子结点可以分为多个不相交的子树
2. 树的术语
| 术语 | 释义 |
|---|---|
| 结点的度 | 一个结点含有的子树的个数称 |
| 树的度 | 一棵树中,最大的结点的度 |
| 叶结点 / 终端结点 | 度为零的结点 |
| 父亲结点 / 父结点 | 若一个结点含有子结点,则这个结点称为其子结点的父结点 |
| 孩子结点 / 子结点 | 一个结点含有的子树的根结点称为该结点的子结点 |
| 兄弟结点 | 具有相同父结点的结点互称为兄弟结点 |
| 堂兄弟结点 | 父结点在同一层的结点互为堂兄弟 |
| 结点的祖先 | 从根到该结点所经分支上的所有结点 |
| 子孙 | 以某结点为根的子树中任一结点都称为该结点的子孙 |
| 结点的层次 | 从根开始定义起,根为第1层,根的子结点为第2层,以此类推 |
| 树的高度或深度 | 树中结点的最大层次(根结点的层次) |
| 森林 | 由 m(m>=0)棵互不相交的树的集合称为森林 |
3. 树的种类
| 术语 | 释义 |
|---|---|
| 无序树 | 树中任意结点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树 |
| 有序树 | 树中任意结点的子结点之间有顺序关系,这种树称为有序树 |
| 二叉树 | 每个结点最多含有两个子树的树称为二叉树 |
| 完全二叉树 | 对于一颗二叉树,假设其深度为 d(d>1) 除了第 d 层外,其它各层的结点数目均已达最大值, 且第 d 层所有结点从左向右连续地紧密排列, (满二叉树的是所有叶结点都在最底层的完全二叉树) |
| 平衡二叉树 | AVL 树,当且仅当任何结点的两棵子树的高度差不大于 1 的二叉树 |
| 排序二叉树 | 又称二叉查找树,英语:Binary Search Tree,也称二叉搜索树、有序二叉树 根的数值大于左子树任意结点的数值,小于右子树所有结点的数值 对于它的子树,也均满足上一条 |
| 霍夫曼树 | 用于信息编码,带权路径最短的二叉树称为哈夫曼树或最优二叉树 |
| B 树 | 一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多余两个子树 |
4. 常见应用场景
- xml,html 等,编写它们的解析器的时候,不可避免要用到树
- 路由协议
- mysql 数据库索引
- 文件系统的目录结构
- 许多经典的 AI 算法
- 机器学习中的 decision tree
5. 二叉树
- 二叉树是每个结点最多有两个子树的树结构
- 通常子树被称作“左子树”(left subtree) 和“右子树”(right subtree)
[DS+Algo] 009 树的介绍的更多相关文章
- B树,B+树,B*树以及R树的介绍
https://blog.csdn.net/peterchan88/article/details/52248714 作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开 ...
- python算法与数据结构-数据结构中常用树的介绍(45)
一.树的定义 树是一种非线性的数据结构,是由n(n >=0)个结点组成的有限集合.如果n==0,树为空树.如果n>0,树有一个特定的结点,根结点根结点只有直接后继,没有直接前驱.除根结点以 ...
- dom树的介绍,及原理分析
三.解析和DOM树的构建 1.解析: 由于解析渲染引擎是一个非常重要的过程,我们将会一步步的深入,现在让我们来介绍解析. 解析一个文档,意味着把它转换为一个有意义的结构——代码可以了解和使用的东西,解 ...
- UE4中的AI行为树简单介绍
UE4引擎中可以实现简单AI的方式有很多,行为树是其中比较常用也很实用的AI控制方式,在官网的学习文档中也有最简单的目标跟踪AI操作教程,笔者在这里只作简单介绍. AIController->和 ...
- AVL树的介绍和实现
一.AVL树 AVL树是一种自平衡二叉查找树,因此在了解AVL树之前先介绍一下平衡二叉树.所谓平衡二叉树即该树中的任一个节点的左子树和右子树高度差不会超过1.如下图左是平衡二叉树,而右图则不是.节点4 ...
- 有意思的B+树漫画介绍
转载自:伯乐专栏作者/玻璃猫,微信公众号 - 梦见 漫画:什么是b+树 这一次我们来介绍 B+ 树. 一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女. 2.每个中间节点都包含k-1个元素和 ...
- D&F学数据结构系列——B树(B-树和B+树)介绍
B树 定义:一棵B树T是具有如下性质的有根树: 1)每个节点X有以下域: a)n[x],当前存储在X节点中的关键字数, b)n[x]个关键字本身,以非降序存放,因此key1[x]<=key2[x ...
- Trie树(字典树)的介绍及Java实现
简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前缀,也 ...
- [MIT Intro. to algo]Lecture 1: 课程介绍,算法优势,插入算法和归并算法分析,渐近符号
The theoretical study of computer program performance and resource useage. First, analysis and the ...
随机推荐
- mysql<六>
-- ########## 01.综合练习 ########## -- 使用的表结构来自前面创建的"教师授课.学生选课并有课程成绩"这个数据库设计 -- studentinfo.t ...
- 【NOIP2016提高A组模拟9.9】爬山
题目 国家一级爬山运动员h10今天获得了一张有着密密麻麻标记的地图,在好奇心的驱使下,他又踏上了去爬山的路. 对于爬山,h10有一个原则,那就是不走回头路,于是他把地图上的所有边都标记成了有向边.他决 ...
- PHP基础教程 php 网络上关于设计模式一些总结
1.单例模式 单例模式顾名思义,就是只有一个实例.作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的要点有三个: 一是某个类只能有一个实例; 二 ...
- php中文件断点上传怎么实现?
1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...
- 页面禁止刷新处理Js实现
document.onkeydown = function(e) { e = window.event || e; var k = e.keyCode; //屏蔽ctrl+R,F5键,ctrl+F5键 ...
- 【BZOJ3876】 [Ahoi2014]支线剧情
Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支线剧情,现 ...
- scrapy项目3:爬取当当网中机器学习的数据及价格(spider类)
1.网页解析 当当网中,人工智能数据的首页url如下为http://category.dangdang.com/cp01.54.12.00.00.00.html 点击下方的链接,一次观察各个页面的ur ...
- psdash-为开发、测试人员提供简单的方法,在web界面查看服务器的运行情况(网络,带宽,磁盘,CPU), 同时可以在web界面查看日志
psdash是linux的系统信息web指示板主要由使用数据psutil——由此得名. github地址:https://github.com/Jahaja/psdash 特性 安装 开始 配置 截图 ...
- (79)【按键】[独立按键] - 1: 单击,双击,三击以及N击
此按键程序的实现的功能是单个独立按键的[单击],[长按],[双击],[三击]以及[多击].本文分为三个部分, 第一个部分是说[单击],[长按]的程序: 第二部分是讲[双击]: 第三部分是讲[三击],[ ...
- springcloud(十七):服务网关 Spring Cloud GateWay 熔断、限流、重试
上篇文章介绍了 Gataway 和注册中心的使用,以及 Gataway 中 Filter 的基本使用,这篇文章我们将继续介绍 Filter 的一些常用功能. 修改请求路径的过滤器 StripPrefi ...