1.堆的意义在于最快的找到最大最小值,在堆中插入一个值,取走最大值或最小值重新狗仔堆结构,其时间复杂度为O(log N) ,而其它方法至少为O(N),堆在时间中用途不在于排序,其主要作用在于调度算法中,比如优先级调度,每次取优先级最高的。
2.哈希表主要是一O(1)时间内对查找对象定位,但是事实上,如果输入集合不确定的情况下,可能出现大量冲突,这样可能出现最差情况。所以哈希表如果在输入集合确定的情况下,选择合适的哈希函数和解决冲突的方法,可以在O(1)时间内完成。
3.二叉树为了动态的查找和插入,保证在O(height时间),这就完成了hash不能完成的。但是二叉树可能出现最坏情况
4.平衡树和红黑树为了把查找的时间保证在O(LOGN)范围内。
红黑树和平衡二叉树区别如下:
1、红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单。
2、平衡二叉树追求绝对平衡,条件比较苛刻,实现起来比较麻烦,每次插入新节点之后需要旋转的次数不能预知。
平衡二叉树又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量。