File tree Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Expand file tree Collapse file tree 2 files changed +19
-0
lines changed Original file line number Diff line number Diff line change @@ -116,6 +116,22 @@ type tree struct {
116
116
dummy node
117
117
}
118
118
119
+ func (t * tree ) Traverse (fn func (id Interval )) {
120
+ nodes := []* node {t .root }
121
+
122
+ for len (nodes ) != 0 {
123
+ c := nodes [len (nodes )- 1 ]
124
+ fn (c .interval )
125
+ nodes = nodes [:len (nodes )- 1 ]
126
+ if c .children [0 ] != nil {
127
+ nodes = append (nodes , c .children [0 ])
128
+ }
129
+ if c .children [1 ] != nil {
130
+ nodes = append (nodes , c .children [1 ])
131
+ }
132
+ }
133
+ }
134
+
119
135
func (tree * tree ) resetDummy () {
120
136
tree .dummy .children [0 ], tree .dummy .children [1 ] = nil , nil
121
137
tree .dummy .red = false
Original file line number Diff line number Diff line change @@ -69,4 +69,7 @@ type Tree interface {
69
69
// interval. The provided interval's ID method is ignored so the
70
70
// provided ID is irrelevant.
71
71
Query (interval Interval ) Intervals
72
+ // Traverse will traverse tree and give alls intervals
73
+ // found in an undefined order
74
+ Traverse (func (Interval ))
72
75
}
You can’t perform that action at this time.
0 commit comments