2)哈希表的基本操作?
写入:O(1)、读取:O(1)、扩容O(n)。
3)什么是哈希函数?
哈希表本质上是一个数组,只是数组只能根据下标,像a[0] a[1] a[2] a[3] 这样来访问,而哈希表的key则是以字符串类型为主的。
通过哈希函数,我们可以把字符串或其他类型的key,转化成数组的下标index。
如给出一个长度为8的数组,则:
当key=001121时,
index = HashCode ("001121") % Array.length = 7
当key=this时,
index = HashCode ("this") % Array.length = 6
4)什么是哈希冲突?
不同的key通过哈希函数获得的下标有可能是相同的,例如002936这个key对应的数组下标是2,002947对应的数组下标也是2,这种情况就是哈希冲突。
5)如何解决哈希冲突?
开放寻址法:例子Threadlocal。
6 树
1)什么是树?
树(tree)是n(n≥0)个节点的有限集。
当n=0时,称为空树。在任意一个非空树中,有如下特点:
- 有且仅有一个特定的称为根的节点。
- 当n>1时,其余节点可分为m(m>0)个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。
2)树的遍历?
(1)深度优先
前序:根节点、左子树、右子树。
中序:左子树、根节点、右子树。
后序:左子树、右子树、根节点。
实现方式:递归或栈。
(2)广度优先
层序:一层一层遍历。
实现方式:队列。
7 二叉树
1)什么是二叉树?
二叉树(binary tree)是树的一种特殊形式。二叉,顾名思义,这种树的每个节点最多有2个孩子节点。注意,这里是最多有2个,也可能只有1个,或者没有孩子节点。
2)什么是满二叉树?
一个二叉树的所有非叶子节点都存在左右孩子,并且所有叶子节点都在同一层级上,那么这个树就是满二叉树。
3)什么是完全二叉树?
对一个有n个节点的二叉树,按层级顺序编号,则所有节点的编号为从1到n。如果这个树所有节点和同样深度的满二叉树的编号为从1到n的节点位置相同,则这个二叉树为完全二叉树。
8 二叉查找树
1)什么是二叉查找树?
二叉查找树在二叉树的基础上增加了以下几个条件:
- 如果左子树不为空,则左子树上所有节点的值均小于根节点的值。
- 如果右子树不为空,则右子树上所有节点的值均大于根节点的值。
- 左、右子树也都是二叉查找树。
2)二叉查找树的作用?
- 查找==》二分查找。
- 排序==》中序遍历。
3)二叉树的实现方式?
- 链表。
- 数组:对于稀疏二叉树来说,数组表示法是非常浪费空间的。
9 二叉堆
1)什么是二叉堆?
二叉堆是一种特殊的完全二叉树,它分为两个类型:最大堆和最小堆。
- 最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。
- 最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。
2)二叉堆的基本操作?
(1)插入:插入最末,节点上浮。
(2)删除:删除头节点,尾节点放到头部,再下沉。
(3)构建二叉堆:二叉树==》二叉堆,所有非叶子节点依次下沉。
3)二叉堆的实现方式?
数组:
-
数据结构
+关注
关注
3文章
573浏览量
40121 -
排序算法
+关注
关注
0文章
52浏览量
10056 -
存储结构
+关注
关注
0文章
21浏览量
9711
发布评论请先 登录
相关推荐
评论