Java基础面试题——数据结构

数据结构

数组

  1. 数组声明时在栈里,初始化后在堆里

  2. 数组对象是引用类型,可以看成对象。Java中对象是在堆中的,数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的

  3. 当处理数组元素时候,我们通常使用基本循环或者 For-Each 循环。

链表

链表是一种数据结构,和数组同级.

链表在进行循环遍历时效率不高,但是插入和删除时优势明显。

Hash表

根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

若关键字为k,则其值存放在f(k)的存储位置上。由此,不需比较便可直接取得所查记录。

是一种只能在一端进行插入和删除操作的特殊线性表。

它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶.

需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

继承于vector,线程安全

队列

它只允许在表的前端(front)进行删除操作,而在表的 后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。

双向队列可以前后端都进行插入与删除操作

双向队列与双向链表的区别:双向链表可以在中间进行插入与删除操作

排序二叉树

首先如果普通二叉树每个节点满足:

左子树所有节点值小于它的根节点值,且右子树所有节点值 大于它的根节点值,

则这样的二叉树就是排序二叉树

红黑树

红黑树(Red Black Tree) 是一种自平衡二叉查找树

它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目

特性

每个节点或者是黑色,或者是红色

根节点是黑色

每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL 或NULL)的叶子节点!]

如果一个节点是红色的,则它的子节点必须是黑色的。

从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点

你可能感兴趣的:(Java基础面试题——数据结构)