二叉树:
二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。
二叉树分类:
1、满二叉树
定义:高度为h,并且由2h-1个结点组成的二叉树,称为满二叉树。(叶子节点高度一致)
2.完全二叉树
定义:一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下层的叶结点集中在靠左的若干位置上,这样的二叉树称为完全二叉树。
特点:叶子结点只能出现在最下层和次下层,且最下层的叶子结点集中在树的左部。显然,一棵满二叉树必定是一棵完全二叉树,而完全二叉树未必是满二叉树。
3.二叉查找树( Binary Search Tree)
特性:
1.左子树节点值小于等于根节点值。
2.右子树节点值大于等于根节点值。
3.缺点,极端情况下二叉树不平衡,会变成线性查找了。
4.AVL树
AVL树是一颗严格的自平衡的二叉查找树(左<根<右),同时左子树和右子树的高度之差的绝对值不超过1。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
5.红黑树
红黑树(Red Black Tree)是一种弱自平衡二叉查找树,红黑树确保从根节点到叶子节点没有一条路径会比其它路径长出两倍。因此课件红黑树的高度是高于AVL树的。
红黑树满足如下特性:
① 每个结点是红色或者黑色的。
② 根结点是黑色的。
③ 叶子节点是黑色空节点(NIL)。
④ 红色节点的左右子结点都必须是黑色的(但黑色结点的子结点可以是黑色的)
⑤ 任一节点到叶子节点的路径必须包含相同数目的黑色结点。
AVL树和红黑树的插入和删除操作都需要通过树的旋转来维持平衡。