[BFS] 廣度優先搜尋(Breadth-First Search)

廣度優先搜尋

首先,限定樹的類別

<?php

Class TreeNode {
    public function __construct(
        public $value = 0,
        public ?TreeNode $left = null,
        public ?TreeNode $right = null
    ) {
    }
}

層序走訪

function levelOrder(TreeNode $node)
{
    if ($node === null) {
        return null;
    }

    $queue = new SplQueue();
    $queue->enqueue($node);
    while(!empty($queue)) {
        $node = $queue->dequeue();
        echo $node->value;
        if ($node->left !== null) {
            $queue->enqueue($node->left);
        }
        if ($node->right !== null) {
            $queue->enqueue($node->right);
        }
    }
}

Last updated