这两个大佬可谓是没人愿意见到的数据结构,先挑明身份:
学过计算机组成原理的都知道,计算机内部靠高低电平(上升沿,下降沿)来区分一个信号。所以,“二叉”这个概念是没跑了的。堆也是二叉的。
就常见的而言,最长见的数结构是搜索树,最常见的堆是大(小)根堆。差别就在于,堆的左右节点是没有大小关系的,而树一般是左中右嘛。
既然说道这里,扯一句大堆排序,最顶的是max,去掉max节点,层而的节点会上去一个,相应的这边树会再选出一个最大,与另一边的比较。
也就是说,堆和红黑树很像哦。(有重复值的堆对应的是STL 的multset)。
二叉树:
二叉树概念介绍:https://www.cnblogs.com/polly333/p/4740355.html
二叉搜索树(二叉索索树,二叉排序树):常见的那种 (左小于根)(右大于根)
平衡二叉树(AVL树):1,左右子树高度差不超过1;
2,每一个字数都是平衡二叉树 ;
3,平衡二叉树必然是二叉搜索树 ;
红黑树:一颗自平衡的二叉搜索树。
二叉树常用算法:http://blog.csdn.net/u011461385/article/details/48184649
二叉树数据结构:
typedef struct BiNode{ TElement data; struct BiNode *lchild,*rchild; }BiTNode, *BiTree;
二叉树可以数组赋值,链表赋值(结构定义和双向链表一样)。
PS: 二叉树的层遍历借助队列。
堆:
堆使用的场景处理海量数据。
数据结构:同上。
堆排序:https://www.cnblogs.com/mengdd/archive/2012/11/30/2796845.html
使用场景: 海量数据查找。
红黑树VS堆:http://blog.csdn.net/abcd1f2/article/details/45333715