PHP code example of rstoetter / cbalancedbinarytree-php
1. Go to this page and download the library: Download rstoetter/cbalancedbinarytree-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rstoetter / cbalancedbinarytree-php example snippets
class cMyTreeData {
public $m_data_1 = '';
public $m_data_2 = -1;
function __construct( string $data_1, int $data_2 ){
$this->m_data_1 = $data_1;
$this->m_data_1 = $data_2;
} // function __construct( )
public function GetKey( ) : string {
// calculate the unique sort key for the Tree
return "{$this->m_data_1}-{$this->m_data_2}";
} // function GetKey( )
// other methods here
} // class cMyTreeData
class cMyTreeNode extends \rstoetter\cbalancedbinarytree\cBalancedBinaryTreeNode {
function __construct( string $data_1, int $data_2 ){
$obj_data = new cMyTreeData( $data_1, $data_2 );
parent::__construct( $obj_data->GetKey( ), $obj_data );
} // function __construct( )
public function __toString( ) : string {
$ret = $this->_data->GetKey();
return $ret;
} // function __toString( )
} // class cMyTreeNode
class cMyTree extends \rstoetter\cbalancedbinarytree\cBalancedBinaryTree {
function __construct( ){
// do something here
// $this->RebalanceTree( );
} // function __construct( )
public function MyInsert( string $data_1, int $data_2 ) {
// inserts a new node in the tree
$obj_new = new cMyTreeNode( $data_1, $data_2 );
$this->InsertNode( $obj_new );
// maybe you have to rebalance the tree now
// NOTE: if you are filling the tree with a bunch of data, then you can rebalance the tree after reading all objects, too
$this->RebalanceTree( );
} // function MyInsert( )
public function MySearch( string $key ) {
// returns an object of type cMyTreeData or false
$obj_found = $this->SearchByKey( $key );
// $obj_found is of type cBalancedBinaryTreeNode
if ( $obj_found !== false ) {
return $obj_found->GetData( );
}
return false;
} // function MySearch( )
public function PrintTree( ) : string {
// return the ordered keys of the Tree as a string
parent::_PrintTree( $this->m_root );
} // function PrintTree( )
protected function _TraverseInOrder( $tree ) {
// internal method to recurse the tree in order beginning with $tree and do something with each node
if ( is_null( $tree ) ) { return ; }
//
$this->_TraverseInOrder( $tree->GetLeft( ) );
//
$obj = $tree->GetData( );
//
// do something with $obj, which is of the type cMyTreeData
//
//
$this->_TraverseInOrder( $tree->GetRight( ) );
} // function _TraverseInOrder( )
public function TraverseInOrder( ) {
// traverse the whole tree in ordered order
// recurse the tree beginning with the root pointer
$this->_TraverseInOrder( $this->m_root );
} // function TraverseInOrder( )
} // class cMyTree
$my_tree = new cMyTree( );
$my_tree->MyInsert( 'data 1', 1 );
$my_tree->MyInsert( 'data 2', 2 );
$my_tree->MyInsert( 'data 3', 3 );
$obj = $my_tree->MySearch( 'data 1' );
if ( $obj !== false ) {
// do something withe $obj
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.