树与二叉树
树是一种非常常用的数据结构,尤其二叉树的应用更是广泛,哈夫曼树及哈夫曼编码就是二叉树的重要用途,排序二叉树,平衡二叉树,红黑树在实际编程中都有极其广泛的用途,例如,Java集合框架的TreeMap本质上就是红黑树。
将介绍:
》树的三种存储结构:
父节点表示法,子节点链表示法,链表存储
》二叉树
二叉树的各种便利方式,以及三种优先遍历,和广度优先遍历
》哈夫曼树,排序二叉树,和红黑树
"红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
注意:
(01) 特性(3)中的叶子节点,是只为空(NIL或null)的节点。
(02) 特性(5),确保没有一条路径会比其他路径长出俩倍。因而,红黑树是相对是接近平衡的二叉树。
红黑树示意图如下:
红黑树的应用:
红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。