Wyszukiwanie wartości w tablicach zagnieżdżonych z użyciem rekurencji (przeszukiwanie drzewiaste)

Założenie: Napiszemy funkcję rekurencyjną, która będzie przeszukiwała tablicę zagnieżdżoną w celu znalezienia określonej wartości.

Krok po kroku:

  1. Definicja funkcji rekurencyjnej: Funkcja przyjmuje tablicę i szukaną wartość jako argumenty.
    
    function recursiveSearch(array $array, $value): ?int {
      foreach ($array as $key => $item) {
        if ($item === $value) {
          return $key; // Znaleziono wartość, zwracamy klucz
        }
        if (is_array($item)) {
          $result = recursiveSearch($item, $value); // Rekurencyjne wywołanie dla podtablicy
          if ($result !== null) {
            return $key . '.' . $result; // Zwracamy ścieżkę do wartości
          }
        }
      }
      return null; // Wartość nie znaleziona
    }
    
  2. Przykładowa tablica zagnieżdżona: Utworzymy tablicę reprezentującą strukturę drzewiastą (np. katalogi i pliki).
    
    $tree = [
      'katalog1' => [
        'plik1.txt' => 'zawartość pliku 1',
        'katalog2' => ['plik2.txt' => 'zawartość pliku 2']
      ],
      'plik3.txt' => 'zawartość pliku 3'
    ];
    
  3. Wyszukiwanie wartości: Użyjemy funkcji `recursiveSearch` do znalezienia wartości “zawartość pliku 2”.
    
    $result = recursiveSearch($tree, 'zawartość pliku 2');
    if ($result !== null) {
      echo "Wartość znaleziona pod kluczem: " . $result;
    } else {
      echo "Wartość nie znaleziona.";
    }
    

Ten przykład pokazuje, jak wykorzystać rekurencję do efektywnego przeszukiwania tablic zagnieżdżonych. Pamiętaj, że rekurencja może być mniej wydajna niż iteracja w przypadku bardzo dużych i głębokich struktur danych.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *