二叉树与堆

这两个大佬可谓是没人愿意见到的数据结构,先挑明身份:

二叉树与堆_第1张图片


学过计算机组成原理的都知道,计算机内部靠高低电平(上升沿,下降沿)来区分一个信号。所以,“二叉”这个概念是没跑了的。堆也是二叉的。

就常见的而言,最长见的数结构是搜索树,最常见的堆是大(小)根堆。差别就在于,堆的左右节点是没有大小关系的,而树一般是左中右嘛。

既然说道这里,扯一句大堆排序,最顶的是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



你可能感兴趣的:(C)