mirror of
https://github.com/charlienet/go-mixed.git
synced 2025-07-18 00:22:41 +08:00
29 lines
1.4 KiB
Go
29 lines
1.4 KiB
Go
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
|