1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| library(igraph)
g <- make_tree(10, mode="undirected")
a <- as_adj_list(g)
V(g)$color <- "orange"
V(g)$color[c(5,6,7,9)] <- "red"
dfs.f <- function(a, s, nodes=NULL, okNodes=NULL) {
nodes <- c(s, nodes)
for (child in a[[s]]) {
if (!(child %in% nodes)) {
v <- V(g)[child]
cat(v, v$color, "\n")
if(v$color=="red") {
okNodes <<- c(as.numeric(v), okNodes)
return
} else {
dfs.f(a, child, nodes, okNodes)
}
}
}
}
# dfs.f(adjacency list, root node)
res <- dfs.f(a, 1)
okNodes #cette variable globale insérée dans ma boucle ne renvoie qu'un élément au lieu de 4 |
Partager