How to compact a graph ?

Hi everybody. Given the following graph, circo outputs me the graphic you can see in the attachments.

digraph test {
root=node_l0_0
edge [arrowhead=none,arrowtail=none]
node_l0_0 -> node_l1_0
node_l1_0 -> node_l2_0
node_l2_0 -> node_l3_0
node_l3_0 -> node_l4_0
node_l3_0 -> node_l4_1
node_l2_0 -> node_l3_1
node_l3_1 -> node_l4_2
node_l3_1 -> node_l4_3
node_l1_0 -> node_l2_1
node_l2_1 -> node_l3_2
node_l3_2 -> node_l4_4
node_l3_2 -> node_l4_5
node_l2_1 -> node_l3_3
node_l3_3 -> node_l4_6
node_l3_3 -> node_l4_7
node_l0_0 -> node_l1_1
node_l1_1 -> node_l2_2
node_l2_2 -> node_l3_4
node_l3_4 -> node_l4_8
node_l3_4 -> node_l4_9
node_l2_2 -> node_l3_5
node_l3_5 -> node_l4_10
node_l3_5 -> node_l4_11
node_l1_1 -> node_l2_3
node_l2_3 -> node_l3_6
node_l3_6 -> node_l4_12
node_l3_6 -> node_l4_13
node_l2_3 -> node_l3_7
node_l3_7 -> node_l4_14
node_l3_7 -> node_l4_15
}

Does everyone know how can I compact this output ? I've already tried to use edge min lengths and costs (weights) but that didn't work. Thank you.

How to compact a graph ?

A binary tree, as you have, is tough for circo, since it approximates subgraphs as circular disks since the subgraphs may be attached at any angle to the parent graph. Here, though, the input is very regular and the subgraphs are very tall but thin (or vice versa). Since circo uses the larger value, a lot of space is wasted.