非线性结构,每个元素都可以有多个前驱和后继

树是n(n>=0)个元素

n = 0时,称为空树

树只有一个特殊的没有前驱的元素,称为树的根root

树中除了根结点,其余元素只能有一个前驱,可以有0个或者多个后继

递归定义

Tn(n>=0)个元素的集合,n=0时,称为空树

有且只有一个特殊元素根,剩余元素都可以被划分为m个互不相交的集合T1,T2,T3,….Tm,而每个树集合都是树,称为树的subtree

子树也有自己的根

树的概念

结点:树中的数据元素

结点的度degree:结点拥有的子树数目称为度,记做d(v)

叶子结点:结点的度为0,称为叶子结点leaf,终端结点,末端结点

分支结点:结点的度不为0,称为非终端结点或者分支结点

分支:结点之间的关系

内部结点:除根结点外的分支结点,当然也不包括叶子结点

树的度是数内各结点的最大值,D结点最大为3,数的度数就是3

孩子结点:结点的子树的根借点成为了该结点的孩子

双亲结点:一个结点是它个子树的根结点的双亲

祖先结点:从结点到该结点所经分支上的所有的结点

子孙结点:结点的所有的子树上的结点都称为该结点的子孙

结点的层次:根结点为第一层,根的孩子为第二层,一次类推

树的深度:树的层次的最大值,

堂兄弟:双亲在同一层的结点

有序树:结点子树是有顺序的,不能交换

无序树:结点的子树是有无序的,可以交换

路径:树中的k个结点n1n2……..mk,满足nini+1)的双亲,成为n1nk的一条路径,就是一条线串下来的,前一个都是后一个的父结点

路径长度=路径上的结点数-1,也就是分支数

森林:mm>=0)棵不相交的树的集合

对于结点而言,其子树的集合就是森林

树的特点

唯一的根

子树不相交

除了根以外,每个元素只能有一个前驱,可以有0个或者多个后继

根节点没有双亲结点,叶子结点没有孩子结点

二叉树

二叉树的每个结点至多只有二棵子树(不存在度大于2的结点)

二叉树的子树有左右之分,次序不能颠倒。

 

左斜树:所有结点都只有左子树

右斜树:所有结点都只有右子树

 

满二叉树:所有的分支结点都存在左子树和右子树

完全二叉树: 除叶子层都达到最大个数,叶子层结点都靠左

 

性质

(1) 在非空二叉树中,第i层的结点总数不超过2**(i-1), i>=1

(2) 深度为h的二叉树,最多有(2**h)-1 个结点(h>=1),最少有h个结点;

(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1

(4) 具有n个结点的完全二叉树的深度为 int(n**0.5)+1   

(5) N个结点 的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:

I为结点编号 I>1

int(I/2) 父结点的编号;

2I 判断左儿子

<=N,左儿子编号为2I

>N, 无左儿子;

2I+1 判断右儿子

<=N,右儿子为2I+1

>N, 无右儿子。

(6)给定N个节点,能构成h(N)种不同的二叉树。h(N)为卡特兰数的第N项。h(n)=C(2*nn)/(n+1)

(7)设有i个枝点,I为所有枝点的道路长度总和,J为叶的道路长度总和J=I+2i [4]

 

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

(0)
zhangmengzhangmeng
上一篇 2018-04-16
下一篇 2018-04-16

相关推荐

  • Python学习第十三周总结

    网络协议和管理、http服务和Apache

    2018-06-03
  • PYTHON类型注解

    PYTHON类型注解 函数定义的弊端 Python是动态语言,变量随时可以被赋值,且能赋值为不同的类型 Python不是静态编译型语言,变量类型是在运行器决定的 动态语言很灵活,但是这种特性也是弊端 def add(x, y):return x + yprint(add(4, 5))print(add(‘hello’, ‘…

    Python笔记 2018-05-02
  • python内置数据结构

    python内置数据结构 sort(key=none,resverse=false)—>none 对列表元素进行排序,就地修改。默认升序 resvers为true,反转,降序 key为一个函数,指定key如何排序 ls.sort(key=functionaame) Print(lst.sort(key=str,reverse=Ture) I…

    Python笔记 2018-03-31
  • IPython封装解构和集合

    IPython Shell命令 !command 执行shell命令 !ls -l , !touch a.txt file = !ls -l | grep py 魔术方法 使用%开头的,IPython内置的特殊方法 %magic 格式 %开头是line magic %% 开头是cell magic,notebook的cell %alias 定义一个系统命令的…

    Python笔记 2018-03-31
  • 面向对象之魔术方法

    特殊属性 属性 含义 __name__ 类、函数、方法的名称 __module__ 类定义所在的模块名 __class__ 对象或类所属的类 __bases__ 类的基类的元组,顺序为它们在基类列表中出现的顺序 __doc__ 类、函数的文档字符串,若没定义则为None __mro__ 类的mro,方法查找顺序 __dict__ 类或实例的属性,可写的字典 …

    2018-05-20
  • Python函数

    函数 数学函数 Python函数 若干语句块、函数名称、参数列表构成,组织代码的最小单元 完成一定的功能 作用 结构化编程对代码的最基本的封装,一般按照功能组织一段代码 复用,减少冗余代码 简洁美观,可读易懂 函数分类 内建函数,max()、reversed() 库函数,math.ceil() 函数定义、调用 def语句定义函数 def 函数名(参数列表):…

    2018-04-16