主要参考博文:
https://blog.csdn.net/u012152619/article/details/42059325
https://blog.csdn.net/define_us/article/details/52097681
二叉树可以综合利用有序数组查找快优势和链表插入删除快的优势。
0、二叉树介绍
根是第0层。上图深度为3,深度从0开始计算。
二叉树的遍历主要有深度优先和广度优先两种。深度优先又包含前序遍历(根左右),中序遍历和后序遍历,这个序指遍历根的序。
1、完全二叉树和满二叉树
深度为K,节点个数为2^(k+1)-1,则是满二叉树。
完全二叉树从根结点到倒数第二层满足完全二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。节点个数位于2^k-1 ~ 2^(k+1)-1。
非平衡就是说树的大部分节点在根的一边。平衡二叉树对于任何一个节点,左树和右树的绝对值差不超过1。
树的不平衡是由数据项插入的顺序造成的。如果关键字是随机插入的,树会更趋向于平衡,如果插入顺序是升序或者降序,则所有的值都是右子节点或左子节点,这样生成的树就会不平衡了。非平衡树的效率会严重退化
2、二叉排序(搜索、查找)树
二叉搜索树的特点是,一个节点的左子节点的关键字值小于这个节点,右子节点的关键字值大于或等于这个父节点。
3、红黑树
4、B、B+、B*树
5、LSM树