* Insert new node into tree * * @param TreeNode $node * @return $this */ public function insert(TreeNode $node) { $this->_insert($node, $this->root); return $this; } /** * Check if tree is balanced * * @return bool True if tree is balanced */ public function isBalanced() { return $this->_isBalanced($this->root); } } // Test cases // Unbalanced Tree $tree1 = new BinaryTree(); $tree1->insert(new TreeNode(3))->insert(new TreeNode(2))->insert(new TreeNode(4))->insert(new TreeNode(7))->insert(new TreeNode(6)); var_dump($tree1->isBalanced()); // bool -> false // Balanced Tree $tree2 = new BinaryTree(); $tree2->insert(new TreeNode(15))->insert(new TreeNode(10))->insert(new TreeNode(20))->insert(new TreeNode(8))->insert(new TreeNode(12))->insert(new TreeNode(16))->insert(new TreeNode(25)); var_dump($tree2->isBalanced()); // bool -> true