听课问题(听完课自己查资料)
- 什么是二叉树 二叉树是怎么存储数据的
- 一个链表是一个集合的数据结构 List是怎么便利找到指定下标元素为什么会快?
- 什么是红黑树 红黑树是怎么存储数据的
- 什么是B TREE 是怎么存储数据的
- 什么是B+TREE 是怎么存储数据的
疑惑答案
a. 二叉树是按照插入的顺序依次排序
比如依次插入的数据 为 : 5、4、6、5、5、5、5
他们存储的时候为 :
- 5是第一个存进去的 所以放在了第一个也就是根节点
- 4第二个放进去小于根节点 5 所以在 左边
- 6第三个放进去大于根节点放在右边
- 5第四个放进去等于(不小于根节点)根节点所以放在根节点5右边 又因为右边有6了 小于6所以放在了6的左边
- 5第五个放进去不小于根节点5放左边 又小于6放左边又不小于5放右边
- 剩下的同理....
ⅰ. 查询方法
比如查询 6 会发现根节点为5 因为6大于5所以去右边找然后就找到了5
ⅱ. 二叉树优点
查询速度快, 比如查询6 这样直接就去右边节点找了可以直接排除左边的数据,而不用去对比全部的数据了
ⅲ. 二叉树缺点
可能会出现偏移的特别厉害 比如1、2、3、4、5依次插入 就会导致形成一个链表,这样二叉树就没必要了
b. 二叉树会形成链表 那么链表为什么会快呢?
例如Java中的链表
ArrayList是一个带有下标的数组
而LinkedList是一个不带有下标的链表根据插入的顺序串在一起的链表,他的查询速度会比较慢是因为 每次查询都要遍历所有的元素
所以他们中ArrayList是一个查询比较快的List 主要是因为 一个数组他是可以通过下标获取元素的
而二叉树中如果形成了类似于一个链表就会导致和LinkedList一样每次查询都会遍历所有的元素