In computer science, a Binary Search Tree (also known as ordered or sorted binary tree) is a node-based binary data structure which has the following properties.
Binary Search Tree Example in PHP
- The left subtree of a node contains only nodes with keys less than the node's key.
- The right subtree of a node contains only nodes with keys greater than the node's key.
- The left and right subtree must each also be a binary tree.
- There must be no duplicate nodes.
In Following case, We use Binary Search Tree
They can be used as a quick way to sort data. Insert data into a binary search tree at O(log(n)). Then traverse the tree in order to sort them.
/** Create Node Class **/ class Node { public $parent = null; public $left = null; public $right = null; public $data = null; public function __construct($data) { $this->data = $data; } public function __toString() { return $this->data; } } /** Create BinarySearchTree Class **/ class BinarySearchTree { protected $_root = null; protected function _insert(&$new, &$node) { if ($node == null) { $node = $new; return; } if ($new->data <= $node->data) { if ($node->left == null) { $node->left = $new; $new->parent = $node; } else { $this->_insert($new, $node->left); } } else { if ($node->right == null) { $node->right = $new; $new->parent = $node; } else { $this->_insert($new, $node->right); } } } protected function _search(&$target, &$node) { if ($target == $node) { return 1; } else if ($target->data > $node->data && isset($node->right)) { return $this->_search($target, $node->right); } else if ($target->data <= $node->data && isset($node->left)) { return $this->_search($target, $node->left); } return 0; } public function insert($node) { $this->_insert($node, $this->_root); } public function search($item) { return $this->_search($item, $this->_root); } } /* Add Data in Nodes **/ $node1 = new Node(43); $node2 = new Node(52); $node3 = new Node(44); $node4 = new Node(47); $node5 = new Node(65); /* Create Object **/ $obj = new BinarySearchTree(); $obj->insert($node1); $obj->insert($node2); $obj->insert($node3); $obj->insert($node4); $obj->insert($node5);