diff options
Diffstat (limited to 'middleware/file/tree')
-rw-r--r-- | middleware/file/tree/all.go | 21 | ||||
-rw-r--r-- | middleware/file/tree/tree.go | 2 |
2 files changed, 23 insertions, 0 deletions
diff --git a/middleware/file/tree/all.go b/middleware/file/tree/all.go new file mode 100644 index 000000000..f621e3465 --- /dev/null +++ b/middleware/file/tree/all.go @@ -0,0 +1,21 @@ +package tree + +// All traverses tree and returns all elements +func (t *Tree) All() []*Elem { + if t.Root == nil { + return nil + } + found := t.Root.all(nil) + return found +} + +func (n *Node) all(found []*Elem) []*Elem { + if n.Left != nil { + found = n.Left.all(found) + } + found = append(found, n.Elem) + if n.Right != nil { + found = n.Right.all(found) + } + return found +} diff --git a/middleware/file/tree/tree.go b/middleware/file/tree/tree.go index db57c2092..234060eba 100644 --- a/middleware/file/tree/tree.go +++ b/middleware/file/tree/tree.go @@ -528,6 +528,8 @@ func (n *Node) floor(rr dns.RR) *Node { return n } +// TODO(successor, predecessor) + // Ceil returns the smallest value equal to or greater than the query q according to q.Compare(). func (t *Tree) Ceil(rr dns.RR) *Elem { if t.Root == nil { |