问题1:数据项,数据元素,数据对象
答案1:
①数据项是每一个属性
②数据元素是一条数据,里面包含多条数据元素
③数据对象:是数据元素的集合
问题2:线性表的分类
答案2:①顺序表②单链表
问题3:顺序表
答案3:
①定义:用顺序存储的方法实现线性表的顺序存储,在逻辑上相邻的元素在物理位置上也相邻
②查找的时间复杂度:O(1)
③插入和删除的时间复杂度:O(n)
④优缺点:可以随机存取,存储密度高,但是改变容量不方便
问题4:单链表
答案4:
①定义:使用链式存储存储的方式实现线性表的顺序存储
②插入操作:
在链表头部插入:时间复杂度为O(1),因为不需要遍历整个链表。
在链表尾部插入:时间复杂度为O(n),因为需要遍历整个链表来找到尾部。
在链表中间插入:时间复杂度为O(n),因为需要遍历链表直到找到插入位置。
③删除操作:
在链表头部删除:时间复杂度为O(1),因为只需要修改头节点的指针。
在链表尾部删除:时间复杂度为O(n),因为需要遍历整个链表来找到倒数第二个节点。
在链表中间删除:时间复杂度为O(n),因为需要遍历链表直到找到要删除的节点的前一个节点。
④查找操作:
查找一个节点:时间复杂度为O(n),因为需要遍历整个链表直到找到目标节点。
查找最大/最小值:时间复杂度为O(n),因为需要遍历整个链表。
⑤优缺点:属于顺序存取,改变容量简单,但是需要耗费一定的空间来存储指针
问题5:栈的基本特点
答案5:
①后进先出(LIFO)
②只允许在一端进行插入或删除操作的线性表
③只有一个端口,用于各项操作
问题6:队列的基本特点
答案6:
①先进先出FIFO
②有两个端口,只能在队尾插入,在队头删除
问题7:树的定义
答案7:除了根节点外,任何一个结点都有且仅有一个前驱
问题8:树的结点分类
答案8:
①祖先结点:该结点的父亲,爷爷,一直往上
②子孙结点:自己往下的所有结点
③双亲结点:一个结点的直接前驱(爸爸)
④孩子结点:一个结点的直接后继(儿子)
⑤兄弟结点:一个爹生的多个儿子
⑥堂兄弟结点:和你同一层,但不是你爹生的结点
问题9:结点的特征
答案9:
①两个节点的路径长度:只能从上到下,经过了几条边
②结点的深度:从上往下数,结点所在的层次
③结点的高度:从下往上数,越往上越大
④树的高度/深度:也就是有几层
⑤结点的度:指的是这个节点有几个孩子
⑥树的度:各个节点中度的最大值
问题10:树的计算性质
答案10:
①结点数=总度数+1
问题11:二叉树的分类
答案11:
①满二叉树
除了叶子结点外,每一个结点都有左右两个节点
只有最后一层有叶子结点
不存在度为1的结点
当前节点为i,左孩子为2i,右孩子为2i+1,父亲为i/2向下取整
②完全二叉树
是满二叉树的一部分,但是按照顺序,结点的位置要能够一一对应
只有最后两层可能有叶子结点
最多只有一个度为1的节点
③二叉排序树
左边的结点值都小于该结点;
右边的结点值都大于该结点;
④平衡二叉树
所有左子树和右子树的高度差不超过1
这主要是为了能够确保有更高的搜索效率,不然树只长一遍就变成了顺序查找了。