🎉 I'm releasing 12 products in 12 months! If you love product, checkout my new blog workingoutloud.dev

Back to home

PHP Trees

    This expects an installation on the system of phpunit.

    Test File

    Create tree_test.php:

    <?php require "tree.php"; class TreeTest extends PHPUnit\Framework\TestCase { public function testBFS() { $n4 = new Node(4); $n5 = new Node(5); $n2 = new Node(2, [$n4]); $n3 = new Node(3, [$n5]); $n1 = new Node(1, [$n2,$n3]); $t = new Tree($n1); $expected = [1,2,3,4,5]; $this->assertEquals($expected, $t->bfs()); } public function testDFS() { $n4 = new Node(4); $n5 = new Node(5); $n2 = new Node(2, [$n4]); $n3 = new Node(3, [$n5]); $n1 = new Node(1, [$n2,$n3]); $t = new Tree($n1); $expected = [1,2,4,3,5]; $this->assertEquals($expected, $t->dfs()); } }

    Trees

    Create tree.php:

    <?php class Tree { function __construct($root = null) { $this->root = $root; } public function bfs() { // 1. shift val // 2. if children, append to arr // 3. append data to array to compare if ($this->root == null) { throw new Error("No tree root"); } $arr = array($this->root); $res = []; while (count($arr) > 0) { $x = array_shift($arr); if ($x->children != null) { $arr = array_merge($arr, $x->children); } array_push($res, $x->data); } return $res; } public function dfs() { // shift from arr // if children exist, unshift array // add data to res array $res = []; $arr = array($this->root); while (count($arr) > 0) { $x = array_shift($arr); if ($x->children != null) { $arr = array_merge($x->children, $arr); } array_push($res, $x->data); } return $res; } } class Node { function __construct($data = null, $children = null) { $this->data = $data; $this->children = $children; } }

    Running Tests

    Change into directory and run phpunit.phar tree_test.php.

    Personal image

    Dennis O'Keeffe

    @dennisokeeffe92
    • Melbourne, Australia

    Hi, I am a professional Software Engineer. Formerly of Culture Amp, UsabilityHub, Present Company and NightGuru.
    I am currently working on Visibuild.

    1,200+ PEOPLE ALREADY JOINED ❤️️

    Get fresh posts + news direct to your inbox.

    No spam. We only send you relevant content.

    PHP Trees

    Introduction

    Share this post