ホームページ >バックエンド開発 >PHPチュートリアル >PHP データ構造: ツリー構造の探索、階層データの構成の習得

PHP データ構造: ツリー構造の探索、階層データの構成の習得

WBOY
WBOYオリジナル
2024-06-02 19:28:021181ブラウズ

ツリー構造は、データを階層的に編成する非線形構造であり、PHP で再帰的または反復的に表現および走査できます。表現方法には再帰 (クラスを使用) と反復 (配列を使用) が含まれ、走査方法には再帰的走査と反復走査 (スタックを使用) が含まれます。実際のケースでは、ファイル システムのディレクトリ ツリーはツリー構造を使用して効率的に編成され、参照や情報の取得が容易になります。

PHP データ構造: ツリー構造の探索、階層データの構成の習得

PHP ツリー構造の探索: 階層データ編成のための強力なツール

ツリー構造は、データを階層的に編成する非線形データ構造であり、階層関係を表現する必要があるデータに非常に適しています。 。 PHP では、再帰または反復を使用してツリー構造を表現し、走査することができます。

ツリー構造の表現

PHP でツリー構造を表現するには主に 2 つの方法があります:

再帰的表現:

class Node {
  public $value;
  public $children = [];

  public function __construct($value) {
    $this->value = $value;
  }

  public function addChild(Node $child) {
    $this->children[] = $child;
  }
}

反復表現 (配列を使用):

$tree = [
  'value' => 'Root',
  'children' => [
    [
      'value' => 'Child 1',
      'children' => []
    ],
    [
      'value' => 'Child 2',
      'children' => [
        'value' => 'Grandchild'
      ]
    ]
  ]
];

ツリー構造の走査

ツリー構造は次の 2 つの方法でトラバースできます:

再帰的トラバーサル:

function traverseRecursively($node) {
  echo $node->value . PHP_EOL;
  foreach ($node->children as $child) {
    traverseRecursively($child);
  }
}

反復トラバーサル (スタックを使用):

function traverseIteratively($node) {
  $stack = [$node];
  while (!empty($stack)) {
    $current = array_pop($stack);
    echo $current->value . PHP_EOL;
    foreach (array_reverse($current->children) as $child) {
      $stack[] = $child;
    }
  }
}

実際のケース: ファイル システム ディレクトリ ツリー

Conサイダー各ディレクトリにサブディレクトリとファイルが含まれるファイル システム ディレクトリ ツリー。このデータ構造は、ツリー構造を使用して効率的に編成および表現できます。

class Directory {
  public $name;
  public $children = [];

  public function __construct($name) {
    $this->name = $name;
  }

  public function addChild(Node $child) {
    $this->children[] = $child;
  }
}

$root = new Directory('/');

$dir1 = new Directory('dir1');
$dir2 = new Directory('dir2');
$dir3 = new Directory('dir3');

$file1 = new File('file1.txt');
$file2 = new File('file2.php');

$dir1->addChild($file1);
$dir2->addChild($file2);
$root->addChild($dir1);
$root->addChild($dir2);
$root->addChild($dir3);

traverseRecursively($root);

ツリー構造を使用すると、ファイル システムのディレクトリ ツリーを簡単に参照して整理し、必要な情報を効率的に取得できます。

以上がPHP データ構造: ツリー構造の探索、階層データの構成の習得の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。