树 二叉树 B树
树
树:是一类重要的非线性数据结构,是以分支关系定义的层次结构。
结点:由数据元素及若干指向子树的分支组成。
如果树的结点个数为0,则树为空树。
树相关术语
- 根结点:一个没有父结点(双亲结点)的结点,一棵树中最多有一个根结点。
- 叶子结点(leaf node):也叫终端结点,度为0的结点就是叶子结点,它位于树最深层,并且树只要非空,就一定存在叶子结点。
- 分支结点:度大于0的结点,显然除了叶子结点之外的结点都为分支结点,而且根结点也是分支结点。
- 结点的度(degree of node):结点的度指的是结点分支的个数。所有结点中最大的度,就是树的度。
- 兄弟结点:拥有相同双亲结点的所有孩子结点叫做兄弟结点。同一双亲的孩子结点。
- 堂兄弟结点、祖先节点、子孙结点
- 路径:从一个结点到另一个结点之间的边和结点构成路径。
- 结点的层次:也称结点的深度(depth):结点的层次为从结点到根结点的路径中边的条数,并且认为根结点的层次为0,因为根结点到自身的路径中边的条数为0(但也有一些教科书假设根结点的层次为1,这个时候要注意书中相应的说明)。
- 树的深度:结点中的最大深度(或最大层次)。
- 结点的高度(height of node):从一个结点出发,一直到它的叶子结点的最大路径中的边的条数,就是该结点的高度,叶子结点的高度认为是0。高度与深度不同,高度的描述是自下向顶的,而深度是自顶向下的,同一层次的结点的高度是可以不同的
- 树的高度:树的高度就是根结点的高度。
- 森林:m(m>=0)棵互不相交的树的集合。
二叉树
每个节点最多含有两个子树的树称为二叉树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。
满二叉树
除最后一层无任何子节点外,每一层上的所有结点都有两个子结点。也可以这样理解,除叶子结点外的所有结点均有两个子结点。节点数达到最大值,所有叶子结点必须在同一层上。
完全二叉树
若设二叉树的深度为h,除第 h 层外,其它各层 (1~(h-1)层) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。
二叉查找树
又称为是二叉排序树(Binary Sort Tree)或二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:
1) 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2) 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
3) 左、右子树也分别为二叉排序树;
4) 没有键值相等的节点。
平衡二叉树
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用算法有红黑树、AVL树等。
B树
又叫平衡多路查找树。B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。而事实上是,B-tree就是指的B树。特此说明。