数据结构

39 阅读2分钟

数据结构概述

  • 常见数据结构: 栈、队列、数组、链表、二叉树、二叉查找树、平衡二叉树、红黑树
  • 核心: 每种数据结构长什么样子、如何添加数据、如何删除数据

栈的思想

image.png

  • 栈内存就运用了这个思想

image.png

队列的思想

image.png

数组的思想

image.png

链表的思想

image.png

树的思想

  • 每一个节点都是一个独立的对象,不仅有值,还有父节点地址值,左子节点地址值,右子节点地址值。
  • 度:每一个节点的子节点数量
  • 下图中树高是4
  • 根节点22
  • 根节点的左子树:左边18及下面

image.png

二叉查找树

  • 二叉树中,任意节点的度≤2
  • 添加节点时遵循:小的存左边,大的存右边,大的就不存。
  • 查找的时候也是按照这个规则

image.png

image.png

前序遍历

image.png

中序遍历

image.png

后序遍历

image.png

层序遍历

image.png

平衡二叉树

  • 任意节点左右子树高度差不超过1
  • 二叉树有弊端,比如7,8,9,10,11这几个数存储的话,只有树的右边有节点,查询还是慢

旋转机制

  • 只有添加节点后不平衡了才会触发旋转机制
左旋
  • 旋转点为根节点的情况

image.png

image.png

  • 旋转点不为根节点的情况

image.png

右旋
  • 旋转方式同左旋
需要旋转的四种情况(左左,左右)
  • 左左,一次右旋搞定 image.png

image.png

  • 左右,先局部左旋,再整体右旋

image.png

  • 先局部左旋,变成左左

image.png

  • 右右,一次左旋搞定

image.png

  • 右左,先局部右旋,再整体左旋

image.png

红黑树

  • 平衡二叉树经常旋转,插入效率太低,红黑树增删改查效率都很高(修改颜色不消耗时间,旋转才消耗时间)。 image.png
  • 红黑规则

image.png

  • 红黑树添加节点规则

image.png