概述

树状图是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

特点

  • 每个节点都只有有限个子节点或无子节点;
  • 没有父节点的节点称为根节点;
  • 每一个非根节点有且只有一个父节点;
  • 除了根节点外,每个子节点可以分为多个不相交的子树;
  • 树里面没有环路(cycle)

术语

  • 节点的度:一个节点含有的子树的个数称为该节点的度;
  • 树的度:一棵树中,最大的节点度称为树的度;
  • 叶节点或终端节点:度为零的节点;
  • 非终端节点或分支节点:度不为零的节点;
  • 父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;
  • 孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点;
  • 兄弟节点:具有相同父节点的节点互称为兄弟节点;
  • 节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
  • 深度:对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为0;
  • 高度:对于任意节点n,n的高度为从n到一片树叶的最长路径长,所有树叶的高度为0;
  • 堂兄弟节点:父节点在同一层的节点互为堂兄弟;
  • 节点的祖先:从根到该节点所经分支上的所有节点;
  • 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。
  • 森林:由m(m>=0)棵互不相交的树的集合称为森林;

定义

定义一

树由一组节点和一组连接节点的边组成。树具有以下属性:

  • 树的一个节点被指定为根节点。
  • 除了根节点之外,每个节点 n 通过一个其他节点 p 的边连接,其中 p 是 n 的父节点。
  • 从根路径遍历到每个节点路径唯一。
  • 如果树中的每个节点最多有两个子节点,我们说该树是一个二叉树。

定义二

树是空的,或者由一个根节点和零个或多个子树组成,每个子树也是一棵树。每个子树的根节点通过边连接到父树的根节点。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层次结构中有一个结点具有特殊的地位,这个结点称为该树的根结点,或称为树根。

种类

  • 无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树;
  • 有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;
    • 二叉树:每个节点最多含有两个子树的树称为二叉树;

      • 完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树;

        • 满二叉树:所有叶节点都在最底层的完全二叉树;
      • 平衡二叉树(AVL树):当且仅当任何节点的两棵子树的高度差不大于1的二叉树;
      • 排序二叉树(二叉查找树(英语:Binary Search Tree)):也称二叉搜索树、有序二叉树;
    • 霍夫曼树:带权路径最短的二叉树称为哈夫曼树或最优二叉树;
    • B树:一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多于两个子树。

深度

定义一棵树的根结点层次为1,其他节点的层次是其父结点层次加1。一棵树中所有结点的层次的最大值称为这棵树的深度。

表示方法

  • 图像表达法

  • 符号表达法
    用括号先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。
    (A(B(D,E),C(F)))

  • 遍历表达法

    • 深度优先遍历:先序遍历、中序遍历、后序遍历
      先序遍历:ABDECF
      中序遍历:DBEAFC
      后序遍历:DEBFCA
    • 广度优先遍历
      层次遍历:ABCDEF

数据结构 - 2 树 - 1 概述相关推荐

  1. 数据结构与算法理论概述

    数据结构与算法理论概述 文章目录 数据结构与算法理论概述 数据结构概述 ◆ 数据结构涵盖的内容 ◆ 存储数据 算法概述 ◆ 算法的基本特性 ◆ 算法设计要求 ◆ 算法分析 数据结构概述 狭义上:数据结 ...

  2. 数据结构—2-3树、2-3-4树、B树、B+树等多路查找树的原理详解

    详细介绍了多路查找树中的2-3树.2-3-4树.B树.B+树的概念的区别,以及它们的应用场景. 文章目录 1 多路查找树的概述 1.1 索引概述 1.2 多路查找树的引出 2 2-3树 2.1 2-3 ...

  3. 数据结构显示树的所有结点_您需要了解的有关树数据结构的所有信息

    数据结构显示树的所有结点 When you first learn to code, it's common to learn arrays as the "main data struct ...

  4. 数据结构树的基本操作_《数据结构》树的基本操作.doc

    <数据结构>树的基本操作 实验四 课程名称:完成日期:姓名:学号:指导教师:实验名称:实验序号:实验成绩:一.实验目的及要求 二.实验环境.实验内容 求出它的深度. .调试过程及实验结果 ...

  5. 数据结构-王道-树和二叉树

    [top] 树和二叉树 树:是\(N(N\geq0)\)个结点的有限集合,\(N=0\)时,称为空树,这是一种特殊情况.在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点. 当\(N>1 ...

  6. (八)数据结构之“树”

    数据结构之"树" 树是什么? 什么是深度/广度优先遍历? 深度优先遍历算法口诀 广度优先遍历算法口诀 二叉树的先中后序遍历 二叉树是什么 先序遍历算法口诀(根 > 左 > ...

  7. 数据结构之树:树的介绍——9

    数据结构之树,介绍篇 树的基本定义 介绍:树(tree)是计算机中非常重要的数据结构,它的外形看起来像一颗倒挂着的的树,使用树这种结构可以描述生活中很多的事物,如族谱,单位的组织架构,xml,html ...

  8. 数据结构之树的存储结构

    数据结构之树的存储结构 思维导图 双亲表示法: 增 删 孩子表示法: 孩子兄弟表示法:(重要) 森林和二叉树的转化 思维导图 双亲表示法: 增 增加M.L节点 删 删除G节点(叶节点) 删除(非叶节点 ...

  9. Linux 内核里的数据结构——基数树

    Linux 内核里的数据结构--基数树 正如你所知道的,Linux内核提供了许多不同的库和函数,它们实现了不同的数据结构和算法.在这部分,我们将研究其中一种数据结构--基数树Radix tree.在 ...

最新文章

  1. ubuntu14.04如何在线安装eclipse以及C/C++开发组件,搭建软件开发平台
  2. python导入数据画多列直方图_在python datafram中使用两列(值、计数)绘制直方图...
  3. draw.io项目本地部署
  4. Linux下搭建jenkins+svn+http+maven自动化部署
  5. MATLAB中rand,randi,randn函数,及rand('state',0)和rand('seed',0)产生随机种子详解
  6. es6 class extends
  7. 堆栈的初始化,主要是为ss和SP赋初值
  8. 导航猫(NaviCat for MySql)建立表的方法
  9. [iCustomer] 项目技术简介
  10. 人生需要积极勇敢的去面对
  11. “外行”带你看国标38900-2020(一)
  12. cocos2dx基础篇(10)——编辑框之一CCTextFieldTTF
  13. 定量风险分析技术__蒙特卡罗分析
  14. 给div元素设置背景颜色
  15. 计算机专业春考技能考什么技能,春季高考信息技术考试说明知识技能
  16. Verdi快速使用技巧
  17. 汉思新材料:无人机控制板BGA芯片底部填充胶应用
  18. 成都列五中学2021年高考成绩查询,2021年成都列五中学升学率怎么样?
  19. matlab根据根求多项式,matlab求解多项式的根
  20. html.dropdownlist必填,html.dropdownlist传值

热门文章

  1. 超级简单的sql入门(二)
  2. Linux内核--五大子系统
  3. 9月英语月刊--thinking
  4. linux中修改配置文件,linux下 修改配置文件的命令
  5. php microtime true输出说明,php microtime函数怎么用
  6. 正则表达式获取网页文本内容
  7. 淘宝商城更名天猫,很二的决定
  8. qtextedit 默认文案_QTextEdit类(老九学堂C++会员友情翻译,不喜勿喷)
  9. python可以做硬件吗_Micropython让你会python就能做硬件
  10. 笔记本外接的显示器突然不能用,显示无信号