Przeglądanie zagnieżdzonej struktury

0

Cześć,

czy da się w jakiś prosty sposób przejrzeć rekrusywnie(nie musi byc rekurencja ale wyglada na naturalne rozwiazanie) strukture zagniezdzoną wyglodająca jak katalogi ?

chodzi o coś takiego:

  • element1
    --------element 1.1
    ------------- -element 1.1.1
  • element2
    ---------element 2.1
  • element3
    ---------element 3.1
    ------------- -element 3.1.1

Jakis pomysł? chcialem napisać prosta funkcje, ale zastanawiam się czy da się to rozwiazac az tak prosto.

0
def traverse(root):
    do_something_with_root(root)
    for element in root:
        traverse(element)

coś takiego?

0

Zależy od języka, ale jak najbardziej się da. Pytanie jaki chcesz uzyskać wynik.

Przykład:

Elixir

def traverse(name \\ "", struct)
def traverse(root, map) when is_map(map), do: Enum.each(map, fn {key, value} -> traverse("#{root}.#{key}", value) end)
def traverse(key, value), do: IO.puts "#{key} --> #{value}"

Ruby

def traverse(struct, root = "")
  case struct
  when Hash then struct.each { |key, value| traverse(value, "#{root}.#{key}") }
  else puts "#{key} --> #{value}"
  end
end
0

ok, rozumiem, dzieki za odpowiedzi.

0

Polecam poczytac o przeszukiwaniu grafow, sa dwie glowne metody: DFS (Depth-first search) i BFS (breadth-first search). Róznia sie glownie kolejnoscia przegladania elementow struktury.

1 użytkowników online, w tym zalogowanych: 0, gości: 1