【面试准备】数据结构

  1. 栈和队列的应用
    · 栈:括号匹配、表达式求值(中缀、后缀表达式等)、递归调用(函数调用)
    · 队列:二叉树层序遍历、图的广度优先遍历、CPU任务调度
  2. 稀疏矩阵的存储:三元组法(行标、列标、值)、十字链表法。压缩存储会失去随机存取特性。
  3. 讲一下十字链表法,及其特点》》》》
  4. 串的匹配
    (1)暴力解法复杂度O(mn);
    (2)KMP算法优点是主串不回溯,优化掉模式串与模式串某段前缀比较的弊端。时间复杂度O(m+n)。
  5. 有关二叉树的概念区分
    · 满二叉树:高度为h含有2^h-1个节点的二叉树。
    特点:除了最底层叶节点,所有节点的度都为2,都有两个分支。编号为i的节点左子节点为2i,右子节点为2i+1。
    · 完全二叉树:高度为h含有n个节点,且每个节点都与高度为h的满二叉树的1~n号节点一一对应。
    特点:相当于满二叉树的一部分。最下层的节点集中在左部。
    · 二叉排序树:左子树上所有节点均小于根节点关键字,右子树节点均大于根结点关键字。所有节点都如此。
    · 平衡二叉树:树上任一节点的左子树和右子树的深度之差不超过1。
  6. 二叉树的遍历
    先序、中序、后序、层序遍历中,中序序列和任一其他序列可以还原二叉树。必须要有中序序列。
  7. 线索二叉树:二叉树的链式存储中,n个节点会有n+1个空指针。设置ltag和rtag标志,为0表示指示节点为子节点。
    建立线索二叉树的过程:《》《》《》
  8. 树的存储结构:
    · 双亲表示法:利用类似静态链表性质,进行双亲查找。两行,一行是数据,一行是父节点的数组下标。很快能找到父节点,但求子节点时需要遍历整个结构。
    · 孩子表示法:将每个节点的孩子节点都用单链表链接起来形成一个线性结构。所有节点形成一个线性表。寻找子女非常直接,但是寻找双亲需要遍历n个节点中孩子链表指针域所指向的n个孩子链表。
    · 孩子兄弟表示法:左孩子右兄弟原则转为二叉树进行存储。
  9. 树和森林的遍历对应二叉树的遍历
森林二叉树
先根遍历先序遍历先序遍历
后根遍历中序遍历中序遍历
  1. 二叉排序树
    最坏情况下时间复杂度:O(n);平均为O(log n) 。

  2. 平衡二叉树
    平均查找长度为O(log n) 。

  3. 哈夫曼树与哈夫曼编码
    可变长度编码,是应用广泛的数据压缩编码。是一种前缀码。

  4. 图的有关概念
    · 完全图:任意两顶点间都存在边;任意两定点间都存在方向相反的两条弧。
    · 无向图中,从定点v到定点w有路径存在,称v和w是连通的。
    · 有向图中v到w和w到v都有路径,则称此图为强连通图。

  5. 图的存储
    · 邻接矩阵法:适合稠密的图,无向图邻接矩阵一定是对称矩阵。空间复杂度O(|V|^2)。
    · 邻接表法:适合稀疏图,表示不唯一,存储空间为[无向:O(|V|+2|E|);有向:O(|V|+|E|)]
    · 十字链表法:存有向图,尾域,头域,两个链域,信息域;同样表示不唯一。
    · 邻接多重表:存无向图,在邻接表中对两个顶点是否存在边,以及对边执行删除等操作时,需要分别在两个顶点的边表中遍历,效率低。

  6. 图的遍历
    广度优先遍历BFS:借助队列。邻接表O(|V|+|E|);邻接矩阵O(|V|^2)。可以求解单源最短路径问题。
    深度优先遍历DFS:借助递归工作栈。空间复杂度O(|V|)。邻接表O(|V|+|E|);邻接矩阵O(|V|^2)。

  7. 普里姆Prim算法

  8. 克鲁斯卡尔算法

  9. 排序:插入排序、交换排序、选择排序、归并排序、基数排序
    (1)插入排序:直接插入排序、折半插入排序、希尔排序
    (2)交换排序:冒泡排序、快速排序
    (3)选择排序:简单选择排序、堆排序
    (4)归并排序:
    (5)基数排序:适合较大数据量的排序

排序方法最佳时间复杂度最坏时间复杂度稳定性备注
直接插入排序有序:O(n)逆序:O(n^2)稳定顺序存储或链式存储的线性表
折半插入排序O(n log n)逆序:O(n^2)稳定通过low和high的赋值确保稳定性。
主要时间复杂度花在移动上。
适合数据量不大的排序表。
希尔排序O(n^2)不稳定适用于线性表存储的数据
冒泡排序O(n)O(n^2)稳定每一次都有元素到达最终位置
快速排序O(n log n)有序:O(n^2)不稳定空间复杂度O(log n),要用到栈
简单选择排序O(n^2)O(n^2)不稳定元素被动交换会导致不稳定
每趟都会有
堆排序O(n log n)O(n log n)不稳定
归并排序O(n log n)O(n log n)稳定空间复杂度O(n)
基数排序O(d(n+r))O(d(n+r))稳定与初始状态无关。
不基于比较和移动。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值