AVLTree
AVL 树(自平衡二叉搜索树),通过旋转保持平衡。
函数签名
typescript
function createAVLTree<T>(
compare?: (a: T, b: T) => number
): AVLTree<T>
interface AVLTree<T> {
insert(value: T): void
search(value: T): boolean
delete(value: T): boolean
findMin(): T | undefined
findMax(): T | undefined
inorderTraversal(): T[]
height(): number
size(): number
isBalanced(): boolean
clear(): void
}API 说明
insert(value): void
插入值,自动旋转保持平衡。
时间复杂度:O(log n)
isBalanced(): boolean
检查树是否平衡。
时间复杂度:O(n)
使用示例
typescript
import { createAVLTree } from '@shared/functions/data-structures/AVLTree'
const avl = createAVLTree<number>()
// 升序插入会自动旋转保持平衡
avl.insert(10)
avl.insert(20)
avl.insert(30)
console.log(avl.isBalanced()) // true
console.log(avl.height()) // 2(平衡后)应用场景
- 数据库索引:保持查询效率
- 有序集合:自动平衡的有序数据
- 范围查询:高效区间查找
- 内存管理:平衡的内存分配