树
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合,把它叫做“树”是因为它看起来像一棵倒挂的树,根朝上,叶子向下。
树的特点:
- 每个节点都有零个或多个子节点;
- 没有父节点的节点称为根节点;
- 每一个非根节点有且仅有一个父节点;
- 除了根节点外,每个子节点可以分为多个不相交的子树;
二叉树是树的特殊的一种,具有如下特点:
- 每个节点最多有两棵子树,节点的度最大为2.
- 左子树和右子树是有顺序的,次序不能颠倒。
- 即使某节点只有一个子树,也要区分左右子树。
二叉树是一种比较有用的这种方案,它添加、删除元素都很快,并且在查找方面也有很多的算法优化,所以,二叉树既有链表的好处,也有数组的好处,是两者的优化方案,在处理大批量的动态数据方面非常有用。
队列
队列与栈一样,它们都是一种线性表,但是他们也有不同之处,队列可以在一端添加元素,另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队。就好像我们排队取票一样。
使用场景:因为队列先进先出的特点,在多线程阻塞队列管理中非常适用。
栈
栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈低不允许操作。
栈的特点:先进后出,从栈顶放入