Example #1
0
     * 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