二叉树

三种遍历:前序、中序、后序

六种实现:递归、循环

元素不同的二叉树,前序+中序 和 后序+中序可以定义一个二叉树

1、前序遍历的第一个值为根节点,根据根节点可以在中序遍历中区分左子树和右子树

2、在前序遍历中找到左子树和右子树,分别进行递归

 

层次遍历:通过队列实现,每次放入头结点的左右节点。

二叉树镜像:递归交换+先序遍历左右节点

二叉树的主要操作可以写画一张图后再分析操作。

 

应用

1、红黑树

HashMap在java7中采用数组+链表的方式,当key的hash值相同时,插入链表(在前面插),当超过数组的个数时,以2倍的大小进行扩容。

HashMap在java8中用到了数组+链表+红黑树的方式,当链表(在后面插)个数大于8个时,链表转化为红黑树。

参考博客:https://www.javadoop.com/post/hashmap

红黑树:自平衡 二叉查找树(左节点<根节点<右节点)

红黑树多用在内部排序,即全放在内存中的

 

2、B+树

B树多用在内存里放不下,大部分数据存储在外存上时。因为B树层数少,因此可以确保每次操作,读取磁盘的次数尽可能的少。
在数据较小,可以完全放到内存中时,红黑树的时间复杂度比B树低。反之,数据量较大,外存中占主要部分时,B树因其读磁盘次数少,而具有更快的速度。