Skip to content

Commit 222fb8c

Browse files
committed
feat: ✨ add support to return the values in the kd-tree
1 parent a417116 commit 222fb8c

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

kdtree.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ func (t *KDTree[T]) Query(getRelativePosition func(T, int) RelativePosition) []T
9696
return res
9797
}
9898

99+
func (t *KDTree[T]) Values() []T {
100+
var res []T
101+
valuesImpl(t.root, &res)
102+
return res
103+
}
104+
99105
func (t *KDTree[T]) Add(value T) bool {
100106
if t.root == nil {
101107
t.root = NewKDNode(value)
@@ -117,6 +123,16 @@ func (t *KDTree[T]) Delete(value T) bool {
117123
return ok
118124
}
119125

126+
func valuesImpl[T Comparable[T]](r *kdNode[T], res *[]T) {
127+
if r == nil {
128+
return
129+
}
130+
131+
*res = append(*res, r.value)
132+
valuesImpl(r.left, res)
133+
valuesImpl(r.right, res)
134+
}
135+
120136
func (t *KDTree[T]) String() string {
121137
b := strings.Builder{}
122138
var q queue.Queue[*kdNode[T]] = queue.NewLLQueue[*kdNode[T]]()

0 commit comments

Comments
 (0)