[DS+Algo] 009 树的介绍

青春壹個敷衍的年華 提交于 2019-12-06 21:23:34

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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!