数据结构概述
- 常见数据结构: 栈、队列、数组、链表、二叉树、二叉查找树、平衡二叉树、红黑树
- 核心: 每种数据结构长什么样子、如何添加数据、如何删除数据
栈的思想
- 栈内存就运用了这个思想
队列的思想
数组的思想
链表的思想
树的思想
- 每一个节点都是一个独立的对象,不仅有值,还有父节点地址值,左子节点地址值,右子节点地址值。
- 度:每一个节点的子节点数量
- 下图中树高是4
- 根节点22
- 根节点的左子树:左边18及下面
二叉查找树
- 二叉树中,任意节点的度≤2
- 添加节点时遵循:小的存左边,大的存右边,大的就不存。
- 查找的时候也是按照这个规则
前序遍历
中序遍历
后序遍历
层序遍历
平衡二叉树
- 任意节点左右子树高度差不超过1
- 二叉树有弊端,比如7,8,9,10,11这几个数存储的话,只有树的右边有节点,查询还是慢
旋转机制
- 只有添加节点后不平衡了才会触发旋转机制
左旋
- 旋转点为根节点的情况
- 旋转点不为根节点的情况
右旋
- 旋转方式同左旋
需要旋转的四种情况(左左,左右)
- 左左,一次右旋搞定
- 左右,先局部左旋,再整体右旋
- 先局部左旋,变成左左
- 右右,一次左旋搞定
- 右左,先局部右旋,再整体左旋
红黑树
- 平衡二叉树经常旋转,插入效率太低,红黑树增删改查效率都很高(修改颜色不消耗时间,旋转才消耗时间)。
- 红黑规则
- 红黑树添加节点规则