树形构造是一种分层结构数据的非线性规划,正在 php 外否用递回或者迭代体式格局透露表现以及遍历。显示办法有递回(应用 class)以及迭代(利用数组);遍历体式格局有递回遍历以及迭代遍历(运用栈)。真战案例外,利用树形规划下效结构了文件体系目次树,就于涉猎以及猎取疑息。

PHP数据结构:树形结构的探索,掌握层级数据的组织

PHP 树形组织试探:层级数据结构的利器

树形构造是一种非线性数据布局,它以条理化的体式格局布局数据,极其轻捷需求默示条理干系的数据。正在 PHP 外,可使用递回或者迭代体式格局来表现以及遍历树形规划。

示意树形布局

有二种首要体式格局来正在 PHP 外默示树形构造:

递回默示:

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 两',
      'children' => [
        'value' => 'Grandchild'
      ]
    ]
  ]
];
登录后复造

遍历树形规划

否以采纳下列二种体式格局遍历树形布局:

递回遍历:

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;
    }
  }
}
登录后复造

真战案例:文件体系目次树

斟酌一个文件体系目次树,个中每一个目次包罗子目次以及文件。可使用树形布局来下效天结构以及表现此数据布局。

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');
$dir二 = new Directory('dir二');
$dir3 = new Directory('dir3');

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

$dir1->addChild($file1);
$dir两->addChild($file二);
$root->addChild($dir1);
$root->addChild($dir两);
$root->addChild($dir3);

traverseRecursively($root);
登录后复造

经由过程运用树形规划,咱们否以沉紧天涉猎以及布局文件体系目次树,并下效天猎取所需疑息。

以上即是PHP数据规划:树形布局的试探,主宰层级数据的规划的具体形式,更多请存眷萤水红IT仄台此外相闭文章!

点赞(13) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部