二叉树:
三种遍历:前序遍历、中序遍历、后续遍历
前序遍历+中序遍历可以确定一个二叉树
前序遍历+后续遍历可以确定一个二叉树
中序遍历+后续遍历不可以确定二叉树
什么是满二叉树?什么是完全二叉树?
什么是二叉查找树(二叉排序树)? 每个node的左子node小于改节点, 右子node大于该节点
数据结构:父节点、数据、左子节点、右子节点
常见面试题:
还原二叉树。
判断二叉树是否为完全二叉树。
二叉查找树转换成排序的双向链表。 中序遍历就可以。
求二叉树的宽度。
平衡二叉树:
结合了数组的查询快以及链表的update快的有点。
https://www.cnblogs.com/PerkinsZhu/p/5824015.html
左左右旋、左右先左在右、右右左旋、右左先右后左
面试题:
判断是否为平衡二叉树。
b-tree:
https://www.cnblogs.com/dongguacai/p/7239599.html
与二叉树对比的优势?数据结构?
mongodb采用b-tree。大部分关系数据库则用b+tree
b+tree:
优势:btree在二叉查找树基础进行优化,使树变的更见矮胖,减少查询次数。b+tree在btree上进一步优化,节点树不存实际数据(只存索引数据),可以使同一个页可以存储更多数据,使树更见矮胖,进一步减少磁盘io次数。
https://www.cnblogs.com/dongguacai/p/7241860.html
红黑树:
java的treeset、treemap级1.9的hashmap都是用的红黑书
红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。