I myself wrote a BFS search function. I used PHP SplQueue
global variable for storing an array of children.
Private $queue = [];
for bfs
public function traverseTree($rootNode, $dummyQueue)
{
if($rootNode->lft != 0) {
$dummyQueue->enqueue($rootNode->lft);
}
if($rootNode->rgt != 0) {
$dummyQueue->enqueue($rootNode->rgt);
}
if(!($dummyQueue->isEmpty())){
$nextId = $dummyQueue->dequeue();
$nextNode =
array_push($this->queue, $nextNode);
$this->traverseTree($nextNode, $dummyQueue);
}
}
The call to traverseTree ()
$dummyQueue = new \SplQueue();
$this->traverseTree($id, $dummyQueue);
Here $ id is the root node for which you want to get all the children.
gist, .