Location: PHPKode > scripts > LLRB Tree > llrb-tree/testLLRBTree.php
#!/usr/bin/php
<?php

/*
 * 		testLLRBTree is copyright � 2009. EarthWalk Software.
 * 		Licensed under the Academic Free License version 3.0
 *      Refer to the file named Copyright provided with the source.
 */
/**
 * 
 * testLLRBTree.
 * 
 * Sample application to test the LLRBTree classes.
 * @author Jay Wheeler.
 * @version 1.0
 * @copyright � 2009. EarthWalk Software.
 * @license refer to Copyright file provided with the source.
 * @package LLRBTree.
 * @subpackage testLLRBTree.
 */
require 'iComparable.php';

require 'bTree.php';
require 'bNode.php';

require 'LLRBTree.php';
require 'LLRBNode.php';

$words = array('cat',      'animal',  'donkey', 
               'bear',     'bat',     'dog', 
               'elephant', 'gazelle', 'llama',
               'zebra',    'horse',   'ferret', 
               'wombat');

$orderedWords = array('animal',   'bat',    'bear',
               		  'cat',      'dog',    'donkey',
	                  'elephant', 'ferret', 'gazelle',
       		          'horse',    'llama',  'wombat',
              		  'zebra');

$deleteWords =array('elephant', 'gazelle', 'animal',
                    'horse',    'wombat',  'cat',
                    'zebra',    'ferret',  'donkey',
                    'bat',      'llama',   'dog',
					'bear');

$tree = new LLRBTree();
$wordnumber = 0;
foreach($words as $word)
{
	$tree->insert($word, ++$wordnumber);
	printLine(sprintf("inserted: %s, root = %s", $word, $tree->root()->key()));
	printTree($tree);
}

$minNode = $tree->treeTop();
printLine("**************************");
printLine(sprintf('minimum = %s', $minNode->key()));
printLine("**************************");

foreach($deleteWords as $word)
{
	$tree->delete($word);
	printLine(sprintf("deleted: %s, root = %s", $word, (($tree->root() != null) ? $tree->root()->key() : 'null')));
	printTree($tree);
}

$wordnumber = 0;
foreach($orderedWords as $word)
{
	$tree->insert($word, ++$wordnumber);
	printLine(sprintf("inserted: %s, root = %s", $word, $tree->root()->key()));
	printTree($tree);
}

exit(0);

function printTree($tree)
{
	$nodenumber = 0;
	foreach($tree as $key => $data)
	{
		$node = $tree->currentNode();
		$nodenumber++;
		printLine(sprintf("\t% 2u - %s = %s, left = %s, right = %s, flag = %s", 
	    	              $nodenumber,
	        	          $key,
	            	      $data,
	            	      (($node->left() === null) ? 'null' : $node->left()->key()),
	            	      (($node->right() === null) ? 'null' : $node->right()->key()),
	        	          ($node->flag() ? 'RED' : 'BLACK')));
	}

	printLine("**************************");
}

function printLine($buffer)
{
	print $buffer . "\n";
}
Return current item: LLRB Tree