• 非线性结构
  • 树是n(n >= 0)个元素的集合:
    • (1)每个元素称为结点(node);
    • (2)有一个特定的结点,称为根结点或根(root);
    • (3)除根结点外,其余结点被分成m(m>=0)个互不相交的有限集合,而每个子集又都是一棵树(称为原树的子树Subtree)
  • 注意
    • n = 0时,称为空树
    • 树只有一个特殊的没有前驱的元素,称为树的根(Root)
    • 树中除了根结点外,其余元素只能有一个前驱,可以有零个或多个后继
    • 子树也有自己的根

树的概念

  • 结点(node):树中的数据元素
  • 结点的度(degree):结点拥有的子树的数目称为度(该结点的分支数),记作d(v)
  • 叶子结点:结点的度为0,称为叶子结点leaf、终端结点、末端结点
  • 分支结点:结点的度不为0,称为非终端结点或分支结点
  • 分支:结点之间的关系
  • 内部结点:除根结点外的分支结点,也不包括叶子结点
  • 树的度是树内各结点的度的最大值。  D子树的度就是3

59df2441cf5be4075000000f

  • 孩子结点(Child):
    • B是A的孩子
  • 双亲结点(Parent):
    • C是E,F的双亲
  • 兄弟结点(Sibling):
    • 具有相同双亲结点的结点
    • B和C是兄弟
  • 祖先结点:
    • 从根结点到该结点所经分支上所有的点
    • A,B,D都是G的祖先结点
  • 子孙结点:
    • 结点的所有子树上结点都称为该结点的子孙
    • C的子孙是E,F,J
  • 结点的层次(level):
    • 根结点为第一层,根的孩子为第二层,以此类推,记作L(v)
  • 树的深度(高度Depth):
    • 树的层次的最大值
    • 上图树深度为4
  • 堂兄弟:
    • 双亲在同一层的结点
    • D,E或F是堂兄弟

59df2441cf5be4075000000f

  • 有序树
    • 结点的子树是有顺序的(兄弟有大小,先后次序)
  • 无序树
    • 结点的子树是无序的,可以交换
  • 路径
    • 一条线串下来的,前一个都是后一个的双亲结点
  • 路径长度   =   路径上的结点数 – 1 ,也是分支数
  • 森林
    • m(m>=0)颗不相交的树的集合
    • 对于结点而言,其子树的集合就是森林。
    • A结点的2颗子树的集合就是森林

树的特点

  • 唯一的根
  • 子树不相交
  • 除根以外,每个元素只能有一个前驱,可以有零个或多个后继
  • 根结点没有双亲,叶子结点没有孩子
  • vi是vj的双亲,则L(vi) = L(vj) – 1, 也就是说双亲比孩子结点的层次小1
  • 堂兄弟的双亲未必是兄弟,例如I,J是堂兄弟,而他们的双亲也是堂兄弟

二叉树

  • 每个结点最多2颗子树
    • 二叉树不存在degree > 2 的结点
  • 是有序树,左子树、右子树是顺序的,不能交换次序
  • 即使某个结点有一颗子树,也要确定是左子树还是右子树

 

  • 二叉树的五种基本形态
    • 空二叉树
    • 只有一个根结点
    • 根节点只有左子树
    • 根节点只有右子树
    • 根节点只有左子树和右子树

斜树

  • 左斜树,所有结点都只有左子树
  • 右斜树,相反
    59df2c3acf5be40750000010

满二叉树

  • 一颗二叉树的所有分支结点都有左右子树,并且所有叶子结点都在最下面一层
  • 同样深度二叉树中,满二叉树结点最多
  • k为深度,则结点总数为2**k-1
  • 如下图,深度为4的15个结点的满二叉树
    59df2d42cf5be40750000012

完全二叉树Complete Binary Tree

  • 除了最后一层的所有的结点都集中在最左边,其他层都是满的
  • 完全二叉树有满二叉树引出
  • 区别在于他们的最后一层,完全二叉树最后一层的结点可以不满

59df2efccf5be40750000013

59df2f1ccf5be40750000015


二叉树的性质

59df2f4ecf5be40750000016

1.在二叉树的第i层上最多有2**(i-1)个结点

2.深度为 k 的二叉树,最多有 2**k-1 个结点

3.对任何一颗二叉树,如果其终端结点数为n0,度数为2的结点数为n3,则有n0 = n2 + 1

  • 换句话说,就是叶子结点数 -1 就等于度数为2 的结点数
  • 证明
    59df38cacf5be40750000019

4.其他性质

  • 高度为k的二叉树,至少有k个结点
  • 含有n个的结点的二叉树的高度之多为n,最小为 math.ceil(log2 (n+1))

5.具有n个结点的完全二叉树的深度为 int(log 2 n) + 1或者math.ceil(log2 (n+1))

6.如果有一颗n个结点的完全二叉树,结点按照层序编号,如下图
59df3bbccf5be4075000001a

  • 如果i = 1,则结点i是二叉树的根
  • i > 1,双亲是int(i/2),这是向下取整
  • 双亲结点是 i, 左孩子结点就是 2i, 右孩子结点就是 2i+1
  • 2i > n,则结点 i 无左孩子,即结点i为叶子结点;否则其左孩子结点存在,编号为2i
  • 2i+1 > n,则结点 i 无右孩子;这里不能说明结点i没有左孩子。否则其右孩子结点存在,编号为2i+1

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87842

(1)
nolannolan
上一篇 2017-10-16 13:47
下一篇 2017-10-16 19:20

相关推荐

  • 用户相关文件简介

    2016/10/23 总结关于用户和组相关的配置文件 Linux系统主要有4个文件与用户和组的配置有关, 主要为/etc/passwd  /etc/shadow   /etc/group  /etc/gshadow 首先来解释一下什么是用户,什么是组 用户:      管理员用户&nbsp…

    Linux干货 2016-10-24
  • tomcat配置详解

    主程序: ·tomcat ·tomcat-admin-webapps ·tomcat-webapps ·tomcat-docs-webapp ·java-1.8.0-openjdk 配置文件: 配置文件目录:/etc/tomcat 主配置文件:server.xml webapps存放位置:/var/lib/tomcat/webapps/ webapps的根目…

    2017-08-08
  • 马哥教育网络班21期+第2周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 目录及文件命令 pwd:打印当前工作路径(绝对路径),并且有相应的环境变量PWD表示。 cd:切换目录 ~用户家目录 ..当前目录的父目录 .当前目录 -上次所在的目录。 ls:查看目录下内容,常用选项 -a 列出目录下所有文件和目录;-d 只显示目录本身属性信息;-h 文件大小单…

    Linux干货 2016-07-17
  • 第1周-1:计算机的组成及其功能以及部分常见Linux发行版简介

    一、计算机的组成及其功能: 计算机主要由硬件部分和软件部分组成。 1、硬件部分 (1)中央处理器 由控制器和运算器两大部分组成,是计算机的大脑,硬件部分里最关键的部分。决定着整个计算机系统的性能。 控制器负责协调计算机硬件的其他部分同步工作,对其他的硬件进行发号施令。是计算机系统的司令。控制器从存储器中读取指令,分析指令的含义,要完成什么操作,需要什么数据,…

    Linux干货 2016-11-01
  • 马哥教育千万级PV实战大揭秘

    又到了激动人心的架构实战项目实践时间,马哥教育面授班的学员都很期待这一刻的到来,因为经过此次洗礼,能让自己成长更多! 上周二,马哥教育张Sir带领18期面授班的学员们做千万PV级别的电商架构实战项目!新增的多台R710企业级服务器设备,轻松搭建大数据、云计算等高端实验环境,让实战,更加真实!相信经过这场实战的洗礼,小伙伴们架构技能会有更大提升! 【张Sir生…

    2016-06-30
  • Linux Shell基础脚本示例

    1、编写脚本/root/bin/systeminfo.sh,显示主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小.   2、编写脚本/root/bin/backup.sh,可实现自动将/etc/目录备份到/root/etcYYYY-mm-dd中.   3、编写脚本/root/bin/disk.…

    Linux干货 2016-08-15