This commit is contained in:
krahets
2023-04-09 04:34:58 +08:00
parent adcbab4d4c
commit 01d05cc1f0
26 changed files with 1501 additions and 1247 deletions
+7 -7
View File
@@ -6,12 +6,12 @@ comments: true
### 二叉树
- 二叉树是一种非线性数据结构,代表着“一分为二”的分治逻辑。二叉树的点包含「值」和两个「指针」,分别指向左子点和右子点。
- 选定二叉树中某点,将其左(右)子点以下形成的树称为左(右)子树。
- 二叉树的术语较多,包括根点、叶点、层、度、边、高度、深度等。
- 二叉树的初始化、点插入、点删除操作与链表的操作方法类似。
- 二叉树是一种非线性数据结构,代表着“一分为二”的分治逻辑。二叉树的点包含「值」和两个「指针」,分别指向左子点和右子点。
- 选定二叉树中某点,将其左(右)子点以下形成的树称为左(右)子树。
- 二叉树的术语较多,包括根点、叶点、层、度、边、高度、深度等。
- 二叉树的初始化、点插入、点删除操作与链表的操作方法类似。
- 常见的二叉树类型包括完美二叉树、完全二叉树、完满二叉树、平衡二叉树。完美二叉树是理想状态,链表则是退化后的最差状态。
- 二叉树可以使用数组表示,具体做法是将点值和空位按照层序遍历的顺序排列,并基于父点和子点之间的索引映射公式实现指针。
- 二叉树可以使用数组表示,具体做法是将点值和空位按照层序遍历的顺序排列,并基于父点和子点之间的索引映射公式实现指针。
### 二叉树遍历
@@ -21,5 +21,5 @@ comments: true
### 二叉搜索树
- 二叉搜索树是一种高效的元素查找数据结构,查找、插入、删除操作的时间复杂度皆为 $O(\log n)$ 。二叉搜索树退化为链表后,各项时间复杂度劣化至 $O(n)$ ,因此如何避免退化是非常重要的课题。
- AVL 树又称平衡二叉搜索树,其通过旋转操作,使得在不断插入与删除点后,仍然可以保持二叉树的平衡(不退化)。
- AVL 树的旋转操作分为右旋、左旋、先右旋后左旋、先左旋后右旋。在插入或删除点后,AVL 树会从底至顶地执行旋转操作,使树恢复平衡。
- AVL 树又称平衡二叉搜索树,其通过旋转操作,使得在不断插入与删除点后,仍然可以保持二叉树的平衡(不退化)。
- AVL 树的旋转操作分为右旋、左旋、先右旋后左旋、先左旋后右旋。在插入或删除点后,AVL 树会从底至顶地执行旋转操作,使树恢复平衡。