树有节点(nodes)和边(edges)构成。
整棵树最上端的节点称为根节点(root),每个节点
拥有
具有方向性的边(directed edges)。相连节点中,在上者称为父节点(parent),在下者称为子节点(child),无子节点者称为叶节点(leaf)。
如果
最多
只允许两个子节点,即所谓二叉树(binaty tree)。不同节点拥有相同的父节点,彼此称为兄弟节点(siblings)。根节点至任意节点之间有唯一路径(path),路径所经过的边数成为长度(length)。根节点至任一节点的长度,即该节点的深度(depth)。根节点的深度永远为0。某节点至其最深子节点(叶节点)的路径长度,称为该节点的高度(height)。整棵树的高度以根节点的高度来代表。
二叉搜索树(binary search tree) 可提供对数时间(logarithmic time)的元素插入和访问。
二叉搜索树的节点放置规则:任何节点的键值一定大于其左子树中的每一个节点的键值,并小于其右子树中的每一个节点的键值。因此,从根节点一直往左走,直到无左路可走,即得最小元素。从节点一直往右走,直到无右路可走,即得最大元素。
元素的插入:从根节点开始,遇键值较大者就向左,遇键值较小者就向右,一直到尾端,既为插入点。
元素的移除:欲删除旧节点A,情况可分两种。如果A只有一个子节点,就直接将A的子节点连至A的父节点,并将A删除。如果A有两个子节点,就以右子树内的最小节点取代A。
平衡二叉搜索树:没有绝对标准,大致意思为:没有任何一个节点过深(深度过大)。
ABL tree:平衡条件的建立是为了确保整棵树的深度为O(logN)。要求任何节点的左右子树高度相差最多为1。
单旋转(Single Rotation):
双旋转(Double Rotation):
RD-tree(红黑树): 必须满足以下规则:
1.每个节点不是红色就是黑色,
2.根节点为黑色,
3.如果节点为红,其子节点必须为黑,
4.任一节点至NULL(树尾端)的任何路径,所含之黑节点数必须相同。