1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-18 00:22:41 +08:00
Files
go-mixed/tree/tree.go
2022-05-20 17:17:31 +08:00

29 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tree
type ITree[T Item[T]] interface {
ReplaceOrInsert(item Item[T]) Item[T] // nil cannot be added to the tree (will panic).
Delete(item T) (T, bool) // 删除节点
Get(key T) (T, bool) // 获取节点
Has(key T) bool // 节点在树中存在时返回true
Ascend(iterator ItemIterator[T]) // 升序
AscendGreaterOrEqual(pivot Item[T], iterator ItemIterator[T]) // 大于等于
AscendLessThan(pivot Item[T], iterator ItemIterator[T]) // 小于
AscendRange(greaterOrEqual, lessThan Item[T], iterator ItemIterator[T]) // 范围迭代
Descend(iterator ItemIterator[T]) // 降序升序迭代
DescendGreaterThan(pivot Item[T], iterator ItemIterator[T]) // 大于,降序迭代
DescendLessOrEquql(pivot Item[T], iterator ItemIterator[T]) // 小于等于,降序迭代
DescendRange(greaterOrEqual, lessThan Item[T], iterator ItemIterator[T]) // 范围降序迭代
Min() (T, bool)
Max() (T, bool)
Len() int
Clear()
}
// 表示树中的单个对象。
type Item[T any] interface {
Less(than T) bool
}
// 迭代函数返回true时停止迭代
type ItemIterator[T Item[T]] func(i T) bool