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 树的介绍的更多相关文章

  1. B树,B+树,B*树以及R树的介绍

    https://blog.csdn.net/peterchan88/article/details/52248714 作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开 ...

  2. python算法与数据结构-数据结构中常用树的介绍(45)

    一.树的定义 树是一种非线性的数据结构,是由n(n >=0)个结点组成的有限集合.如果n==0,树为空树.如果n>0,树有一个特定的结点,根结点根结点只有直接后继,没有直接前驱.除根结点以 ...

  3. dom树的介绍,及原理分析

    三.解析和DOM树的构建 1.解析: 由于解析渲染引擎是一个非常重要的过程,我们将会一步步的深入,现在让我们来介绍解析. 解析一个文档,意味着把它转换为一个有意义的结构——代码可以了解和使用的东西,解 ...

  4. UE4中的AI行为树简单介绍

    UE4引擎中可以实现简单AI的方式有很多,行为树是其中比较常用也很实用的AI控制方式,在官网的学习文档中也有最简单的目标跟踪AI操作教程,笔者在这里只作简单介绍. AIController->和 ...

  5. AVL树的介绍和实现

    一.AVL树 AVL树是一种自平衡二叉查找树,因此在了解AVL树之前先介绍一下平衡二叉树.所谓平衡二叉树即该树中的任一个节点的左子树和右子树高度差不会超过1.如下图左是平衡二叉树,而右图则不是.节点4 ...

  6. 有意思的B+树漫画介绍

    转载自:伯乐专栏作者/玻璃猫,微信公众号 - 梦见 漫画:什么是b+树 这一次我们来介绍 B+ 树. 一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女. 2.每个中间节点都包含k-1个元素和 ...

  7. D&F学数据结构系列——B树(B-树和B+树)介绍

    B树 定义:一棵B树T是具有如下性质的有根树: 1)每个节点X有以下域: a)n[x],当前存储在X节点中的关键字数, b)n[x]个关键字本身,以非降序存放,因此key1[x]<=key2[x ...

  8. Trie树(字典树)的介绍及Java实现

    简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前缀,也 ...

  9. [MIT Intro. to algo]Lecture 1: 课程介绍,算法优势,插入算法和归并算法分析,渐近符号

    The theoretical study of computer program performance and resource useage.   First, analysis and the ...

随机推荐

  1. docker安装踩坑记录

    .docker安装包安装很顺利, yum安装安装源在官网或镜像网站下载, fedora/centos分别下载不同的, 在/etc/yum.repos.d/doccker-ce.repo, 把网址改为镜 ...

  2. 那些jquery或javascript花招

    js定时器 定时器: 1)反复性定时器:格式:window.setInterval(“fn()”,1000); a)会反复执行 b)第二个参数是以毫秒计算的 2)一次性定时器:格式:window.se ...

  3. Docker(2)--Centos7 上安装部署

    Centos7 上安装docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比 ...

  4. HTTP协议的请求方法

    HTTP概念: HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件.图像.结果等,即是一个客户端和服务器端请求和应答的标准 1.http无连接:限制每次连接只处理一个请求,服务端完成客 ...

  5. ESP8266--WIFI热点扫描

    现在,通常,为了让手机连上一个WiFi热点,基本上都是打开手机设置里面的WiFi设置功能,然后会看到里面有个WiFi热点列表,然后选择你要的连接上. 基本上你只要打开手机连接WiFi功能,都会发现附近 ...

  6. 运维工程师之IDC系列

    因为我公司在用浪潮服务器,所以说链接暂时是浪潮服务器 1.用UltraISO制作U盘启动安装系统  链接 http://www.4008600011.com/archives/8816 ones 刻录 ...

  7. 实战build-react(二)-------引入Ant Design(增加)

    https://blog.csdn.net/zhan_lijian/article/details/85271906(copy) 1.肯定参考facebook关于react官网咯 快速搭建 creat ...

  8. postgres select TOP X in group 查询每个组的前几名

    参考: https://stackoverflow.com/questions/27415706/postgresql-select-top-three-in-each-group http://ch ...

  9. Spring Boot教程(十二)整合elk(1)

    elk 简介 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是 ...

  10. spring 接口校验参数(自定义注解)

    1. 注解类 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.l ...