(tree *Tree)
| 201 | } |
| 202 | |
| 203 | func generateQuery(tree *Tree) []Query { |
| 204 | rnd := rand.New(rand.NewSource(time.Now().UnixNano())) |
| 205 | const MAXQUERY = 50 |
| 206 | var queries []Query |
| 207 | |
| 208 | bruteforceLCA := func(u, v int) int { |
| 209 | for u != v { |
| 210 | if tree.GetDepth(u) > tree.GetDepth(v) { |
| 211 | u = tree.GetDad(u) |
| 212 | } else { |
| 213 | v = tree.GetDad(v) |
| 214 | } |
| 215 | } |
| 216 | return u |
| 217 | } |
| 218 | |
| 219 | for q := 1; q <= MAXQUERY; q++ { |
| 220 | u := rnd.Intn(tree.numbersVertex) |
| 221 | v := rnd.Intn(tree.numbersVertex) |
| 222 | queries = append(queries, Query{ |
| 223 | u: u, |
| 224 | v: v, |
| 225 | expected: bruteforceLCA(u, v), |
| 226 | }) |
| 227 | } |
| 228 | |
| 229 | return queries |
| 230 | } |
| 231 | |
| 232 | // Test with the tree with up to 2000 vertices. |
| 233 | func TestLCAWithLargeTree(t *testing.T) { |
no test coverage detected