一、链表
定义
链表是一种类似于铁链状的数据结构,锁链的每一节可以者成是链表的一个元素。每一节只会
记录它之前、之后是哪一节。
类似于锁链,链表的每一节可以打开,能够快速做到一些用数组存储数据时较麻烦的操作,比
如在中间插入或删除数据,取下一段数据,对一段数据进行翻转等操作。
但链表在访问特定编号节点的时候,需要按链上顺序逐个查找,不如数组来的直接。
存储结构
链表上的数据存储单元,一般称为节点(Node),类似于数组中的一个位置。
一个节点会包含它的存储数据(data),以及一或两个用来指向上一个/下一个节点的位置的链接(links)。
分类
单向链表
只记录每个节点的后继。
双向链表
记录每个节点的前驱和后继。
循环单向链表
单链表,最后一个节点后继为第一个节点。
循环双向链表
双链表,形成环形 。
二、二叉树
定义
所有节点的度不超过2的树称为二叉树。
因为每个二叉树的节点最多只会有两个子结点,它的两个子节点一般会被称为左右儿子,两棵子树一般会被称为左右子树。当然,左右儿子甚至根节点本身都有可能缺失(一个节点都没有可以称为空二叉树)
具有相同的节点深度的二叉树节点处于同一层。
特殊的二叉树
完全二叉树:除了最后一层外其他层的节点个数全满,而且最后一层的节点从左到右排满直到最后一个节点。
满二叉树:所有层的节点全满 。
二叉树的遍历顺序
二叉树的遍历顺序可分为先序遍历、中序遍历和后序遍历,以访问根节点的时间做区分 。