zoukankan      html  css  js  c++  java
  • 树:
    非线性解构,每个元素可以有多个前驱和后继
    树时n(n>=0)个元素的集合
         当n=0时 称为空树
         树只有一个特殊的没有前驱的元素,成为树的根ROOT
         树中除了根节点外,其余元素只能有一个前驱,可以有零个或多个后继
     
    递归定义
         树T时n(n>=0)个元素的集合,n=0时,称为空树
         有且只有一个特殊元素跟,剩余元素都可以被划分为M个不相交的集合T1 T2 T3而每一个集合都是树,称为T的子树Subtree
         子树也有自己的根
     
    树的概念:
     结点: 树中的数据元素
    结点的度degree: 结点拥有的子树的数目称为度,记作d(v)
    叶子结点:结点的度为0,称为叶子结点leaf、
    分支结点: 结点的度不为0,称为非终端结点或分支结点
    分支: 结点之间的关系
    内部结点:除根节点外的分支结点,当然不包括叶子结点
    树的度时书内各结点的度的最大值
     
    孩子(儿子child)结点:结点的子树的根结点称为该结点的孩子
    双亲(父parent)结点:一个结点是它各个子树的根节点的双亲
    兄弟(sibling)结点: 具有相同双亲的结点
    祖先结点:从根节点到该结点所经分支上所有的结点,ABD都是G的祖先结点
    子孙结点: 结点的所有子树上的结点都成为该结点的子孙,b的子孙时DGHI
    结点的层次(level):根结点为第一层,根的孩子为第二层,依次类推,记作l(v)
    树的深度(高度Depth):树的层次的最大值,上图的树的深度为4
    堂兄弟: 双亲在同一层的结点
     
    有序树: 结点的子树时有顺序的(兄弟有大小,有先后顺序)不能交换
    无序树: 结点的子树是无序的,可以交换
    路径:树中的k个结点n1,n2...nk 满足ni是n(i+1)的双亲,成为n1到nk的一条路径,就是一条线串下来的前一个都是后一个的父结点
    路径长度=路径长度结点树-1,也就是分支树
    森林:m(m>=0) 棵不相交的树的集合
         对于结点而言,其子树的集合就是森林,a结点的2棵子树的集合就是森林
     
    树的特点:
         唯一的根
         子树不相交
         输了根意外,每个元素只有有一个前驱,可以有0个或多个后继
         根节点没有双亲结点(前驱),叶子结点没有孩子结点(后继)
         vi是vj的双亲,则l(vi)=l(vj)-1,也就是说双亲比孩子的层次结点小1
     
    二叉树:
    每个结点最多2个子树
         二叉树不存在度数大于2的结点
     它是有序树,左子树,右子树是顺序的,不能交换顺序
    即使某个结点只有一棵子树,也要确定它是左子树还是右子树
     
    二叉树的五种形态:
         空二叉树
         只有一个根节点
         根节点只有左子树
         根节点只有右子树
         根节点有左右子树
     
    斜树:
    左斜树:所有结点只有左子树
    右斜树:相反
     
    满二叉树:
    一颗二叉树的所有分支结点都存在左子树和右子树,且所有叶子结点只存在在最下面一层
    同样深度二叉树中,满二叉树结点最多
    k为深度(1<=k<=n),则结点总数为 2^k-1
    如下图一个深度为4 的15个结点的满二叉树:
     
     
    完全二叉树:
    若二叉树的深度为k,二叉树的层数从1到k-1曾的结点数都达到了最大个数,在第k层的所有结点都集中在最左边,这就是完全二叉树
    完全二叉树由满二叉树引出
    满二叉树一定是完全二叉树,但完全二叉树不是满二叉树
    k为深度(1<=k<=n)则结点总数最大值为2^k-1,当达到最大值的时候就是满二叉树
     
    完全二叉树:
    如下图,所有叶子结点都连续的集中在左边
     
    完全二叉树图二:
     
    完全二叉树图3:
     
    不是完全二叉树,如下图:
     
    对任何一颗二叉树t 如果其终端结点为n0,度数为2的结点为n2,则有n0=n2+1
    换言之就是 叶子节点数-1就等于度数为2的结点数
     
    二叉树的性质:
    其他性质:
    高度为k的二叉树,至少有k个结点
    含有n(n>=1)的结点的二叉树高度最多为n,同上句
    含有n(n>=1)的结点的二叉树的高度最多为n最小为 math.ceil(log2(n+1)), 不小于数值的最小整数,向上取整
     
     具有n个结点的完全二叉树的深度为int(log2n)+1或者mathh.ceil(log2(n+1))
     
    性质5:
     
     
  • 相关阅读:
    JAVA-容器(5)-Map
    JAVA-容器(4)-Set
    数据脏读-非重复读-幻读
    JAVA-容器(3)-List
    JAVA-容器(2)-Collection
    JAVA-容器(1)
    Arrays排序
    JAVA-虚拟机(3)-调优
    zip解压缩
    rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较
  • 原文地址:https://www.cnblogs.com/spidermansam/p/7675467.html
Copyright © 2011-2022 走看看