树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序如下时,可用树表示源源程序如下的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述。
一、树的概述
树结构的特点是:它的每一个结点都可以有不止一个直接后继,除根结点外的所有结点都有且只有一个直接前趋。以下具体地给出树的定义及树的数据结构表示。
(一)树的定义
树是由一个或多个结点组成的有限集合,其中:
⒈必有一个特定的称为根(ROOT)的结点;
⒉剩下的结点被分成n>=0个互不相交的集合T1、T2、......Tn,而且,
这些集合的每一个又都是树。树T1、T2、......Tn被称作根的子树(Subtree)。
树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树
1.树的度——也即是宽度,简单地说,就是结点的分支数。以组成该树各结点中最大的度作为该树的度,如上图的树,其度为3树中度为零的结点称为叶结点或终端结点。树中度不为零的结点称为分枝结点或非终端结点。除根结点外的分枝结点统称为内部结点。
2.树的深度——组成该树各结点的最大层次,如上图,其深度为4;
3.森林——指若干棵互不相交的树的集合,如上图,去掉根结点A,其原来的二棵子树T1、T2、T3的集合就为森林;
4.有序树——指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树。
5.树的表示
树的表示方法有许多,常用的方法是用括号:先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。如上图可写成如下形式:
(A(B(E(K,L),F),C(G),D(H(M),I,J)))
5.
2
二叉树
1.二叉树的基本形态:
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:
(1)空二叉树——(a);
(2)只有一个根结点的二叉树——(b);
(3)右子树为空的二叉树——(c);
(4)左子树为空的二叉树——(d);
(5)完全二叉树——(e)
注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。
*nix系系统:ES(Unix)
例子: IvS7aeT4NzQPM
说明:Linux或者其他linux内核系统中
长度: 13 个字符
描述:第1、2位为salt,例子中的'Iv'位salt,后面的为hash值
系统:MD5(Unix)
例子:$1$12345678$XM4P3PrKBgKNnTaqG9P0T/
说明:Linux或者其他linux内核系统中
长度:34个字符
描述:开始的$1$位为加密标志,后面8位12345678为加密使用的salt,后面的为hash
加密算法:2000次循环调用MD5加密
系统:SHA-512(Unix)
这时我们需要:1、定位到记录所在的页
2、从页内查找相应的记录
在前面我们知道了为了主键快速一条记录在页中的位置而设立页目录,类似的办法,为了定位一条记录在所在的数据页我们也可以建立一个别的目录,在建立这个目录的过程中,我们必须做2件事情:
上文叙述的目录项和用户记录长得挺像,只不过目录项中的两个列是主键和页号。所以,我们可以直接复用之前的数据页来存储目录项。采用 record_type 字段区分普通的记录
同时,目录项的 min_rec_flag 为1,普通记录都为0
上面的数据结构就是B+树,真正用来存放用户记录的都是B+树最底层的叶子节点,其余用来存放目录项记录的节点称为非叶子节点或者内节点,最上边的节点称为根节点。
这里我们假设一个数据页,只能存3条记录,实际上一个页可以存很多条记录。假设一个数据页可以存100条用户记录,1000条目录项记录,那么:
如果B+树只有1层,则最多存放 100 条用户记录
如果B+树只有2层,则最多能存放 1000 * 100 =
如果B+树只有3层,则最多能存放 1000 * 1000 * 100 =
如果B+树只有4层,则最多能存放 1000 * 1000 * 1000 * 100 =
所以,我们一般用到的B+树不会超过4层,也就意味着通过主键查找记录时,最多只需要进行4个页面的查找就可以找到。
InnoDB 会自动为主键或者带有 UNIQUE 属性的列建立索引。
KEY 和 INDEX 是同义词,创建索引命名时以 idx 为前缀,后面跟着需要建立索引的列名,且多个列名之间用下划线隔开。
也可以在修改表结构的时候添加索引
最后,删除这个索引。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)