Exemplo n.º 1
0
 public function testMultiNodeQueue()
 {
     $data = $this->generateData();
     $this->queue->enqueue($data);
     $this->queue->enqueue($this->generateData());
     $this->queue->enqueue($this->generateData());
     $lastData = $this->queue->dequeue();
     self::assertTrue($data === $lastData);
     $allData = $this->queue->listAll();
     self::assertCount(2, $allData);
 }
Exemplo n.º 2
0
 /**
  * @return array
  */
 public function breadthFirst()
 {
     $queue = new Queue();
     $queue->enqueue($this->root);
     $listToReturn = [];
     while (!$queue->isEmpty()) {
         /**
          * @var BinaryTreeNode $dequeue
         */
         $dequeue = $queue->dequeue();
         if ($dequeue->getLeft() !== null) {
             $queue->enqueue($dequeue->getLeft());
         }
         if ($dequeue->getRight() !== null) {
             $queue->enqueue($dequeue->getRight());
         }
         array_push($listToReturn, $dequeue->getData());
     }
     return $listToReturn;
 }
Exemplo n.º 3
0
 /**
  *
  * Similar to bredth first traversal
  *
  * @return Ambigous <NULL, DataStructureNode>
  */
 public function findFirstAvaliableNode()
 {
     $queue = new Queue();
     $queue->enqueue($this->root);
     while (!$queue->isEmpty()) {
         $dequeue = $queue->dequeue();
         if ($dequeue->left !== null) {
             $queue->enqueue($dequeue->left);
         } else {
             return dequeue;
         }
         if ($dequeue->right != null) {
             $queue->enqueue($dequeue->right);
         } else {
             return dequeue;
         }
     }
 }