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

树是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 09:12
下一篇 2018-04-16 09:14

相关推荐

  • Python内置数据结构——字符串

    知识结构图 学习笔记 字符串 字符组成的有序序列,字符的集合 使用单引号、双引号、三引号引起来的字符序列 不可变对象 Unicode类型 定义 单引号、双引号、三引号 r、R:引号内的字符原样输出 元素访问 索引访问 可迭代 join连接 “string“.join(iteratable) 使用string作为分隔符将可迭代对象连接起…

    2018-03-31
  • 封装与解构 集合

    封装和解构 封装:将多个值进行分割,结合在一起,本质上返回元组,只是省掉了小括号 ‘==‘意思为内容一致,‘=’意思为内存空间一致 解构:把线性结构的元素解开,并顺序的赋值给其他变量,左边接纳的变量数要和左边解开的元素数量一致 集合不是非线性 解构中使用*变量名接收,但不能单独使用,被*变量名收集后组成一个列表 第一个下划线为9,结果被第二个下划线重新赋值为…

    Python笔记 2018-04-01
  • Python 部分知识点总结(三)

    此篇博客只是记录第五周未掌握或不熟悉的知识点,用来加深印象。

    2018-04-08
  • Python 部分知识点总结(六)

    此篇博客只是记录第八周未掌握或不熟悉的知识点,用来加深印象。

    Python笔记 2018-05-02
  • Python内置数据结构——列表

    知识框架图 学习笔记 数据结构分类 数值 int、float、complex、bool都是class int:长整型,没有上限,取决于内存区域大小 float:支持十进制和科学计数法,仅支持双精度 complex:复数,有实数和虚数部分 bool:int的子类,True、False对应1、0,可以和整数直接运算 序列对象 字符串str 列表list 元组tu…

    2018-03-26
  • 正则表达式

    正则表达式 分类 BRE:基本正则表达式,grep,sed,vi等软件支持,vim有扩展 ERE:扩展正则表达式,egrep,grep -E ,sed  r等 PCRE:几乎所有的高级语言都是PCRE的方言或则变种, 基本语法 元字符metacharater .  匹配除换行符外任意一个字符 [abc]字符集合,只能表示一个字符的位置,匹配所包含的任意一个字…

    Python笔记 2018-05-07