MCPcopy Index your code
hub / github.com/TheAlgorithms/Go / generateTree

Function generateTree

graph/lowestcommonancestor_test.go:149–201  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

147}
148
149func generateTree() *Tree {
150 rnd := rand.New(rand.NewSource(time.Now().UnixNano()))
151
152 const MAXVERTEX int = 2000
153 var numbersVertex int = rnd.Intn(MAXVERTEX) + 1
154 var root int = rnd.Intn(numbersVertex)
155 var edges []TreeEdge
156
157 var fullGraph []TreeEdge
158 for u := 0; u < numbersVertex; u++ {
159 for v := 0; v < numbersVertex; v++ {
160 fullGraph = append(fullGraph, TreeEdge{
161 from: u,
162 to: v,
163 })
164 }
165 }
166 rnd.Shuffle(len(fullGraph), func(i, j int) {
167 fullGraph[i], fullGraph[j] = fullGraph[j], fullGraph[i]
168 })
169
170 par := make([]int, numbersVertex)
171 for u := 0; u < numbersVertex; u++ {
172 par[u] = u
173 }
174
175 var findp func(int) int
176 findp = func(u int) int {
177 if u == par[u] {
178 return u
179 } else {
180 par[u] = findp(par[u])
181 return par[u]
182 }
183 }
184
185 join := func(u, v int) bool {
186 u, v = findp(u), findp(v)
187 if u == v {
188 return false
189 }
190 par[v] = u
191 return true
192 }
193
194 for _, e := range fullGraph {
195 if join(e.from, e.to) == true {
196 edges = append(edges, e)
197 }
198 }
199
200 return NewTree(numbersVertex, root, edges)
201}
202
203func generateQuery(tree *Tree) []Query {
204 rnd := rand.New(rand.NewSource(time.Now().UnixNano()))

Callers 1

TestLCAWithLargeTreeFunction · 0.85

Calls 1

NewTreeFunction · 0.85

Tested by

no test coverage detected