面试小结(二)——数据结构与算法基础

数据结构基础

  • 栈和队列的相同和不同
    • 不同点:
      • 删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
      • 应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
      • 顺序栈能够实现多栈空间共享,而顺序队列不能。
    • 相同点:
      • 都是线性结构。
      • 插入操作都是限定在表尾进行。
      • 都可以通过顺序结构和链式结构实现。
      • 插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
      • 多链栈和多链队列的管理模式可以相同。
  • 平衡二叉树如何构造
    • 定义:
      • 平衡二叉树又称为AVL树,它或者是一棵空树,或者是有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左右子树的深度之差的绝对值不超过1。二叉树的的平衡因子为:该结点的左子树的深度减去它的右子树的深度,则平衡二叉树的所有结点的平衡因子为只可能是:-1、0和1
    • 构造:
      • LL型:插入位置为左子树的左节点,向右旋转
      • RR型:插入位置为右子树的右节点,向左旋转
      • LR型:插入位置为左子树的右节点,先左旋再右旋。
      • RL型:插入位置为右子树的左节点,先右旋再左旋。(后面2种需要先调整插入位置,再调整最小补平衡树。待附图)
  • 双向链表中删除一个结点操作
    • 找到被删除的结点p
    • p->prior ->next = p->next
    • p->next ->prior = p->prior
    • delete p
  • 个人对于数据结构的认识,可以结合实际谈谈
    • 这个问题比较广泛,本人只是简单用食堂作为一个场景。
      • 严格排队 -> 队列,先进先出。
      • 出现插队 -> 链表结点加入
      • 打菜,访问服务器,负载均衡
      • 等等。。。
    • 可以充分发挥想象力。

你可能感兴趣的:(个人记录分享)