Reputation: 5540
I'm visualizing a series of binary trees using dot/graphviz where each tree may point backwards to previous trees. The problem I am having is that I want to force child nodes to be on the left or right of their parent. Notice below that in the first box the arrows coming out of the parent 177 are on the correct sides, but the children are reversed. How can I force the children to be on the correct side?
digraph ptree {
subgraph cluster_3 {
"0x2518250" [label=177,style=filled,fillcolor=black,fontcolor=white]
"0x2518250":sw -> "0x25181e0"
"0x25181e0" [label=86,style=filled,fillcolor=black,fontcolor=white]
null10 [shape=point];
"0x25181e0" -> null10;
"0x25181e0":se -> "0x251a7e0"
"0x251a7e0" [label=115,style=filled,fillcolor=red]
null11 [shape=point];
"0x251a7e0" -> null11;
null12 [shape=point];
"0x251a7e0" -> null12;
"0x2518250":se -> "0x251fc00"
"0x251fc00" [label=183,style=filled,fillcolor=black,fontcolor=white]
null13 [shape=point];
"0x251fc00" -> null13;
null14 [shape=point];
"0x251fc00" -> null14;
}
subgraph cluster_4 {
"0x251ef80" [label=177,style=filled,fillcolor=black,fontcolor=white]
"0x251ef80":sw -> "0x25181e0"
"0x251ef80":se -> "0x251ef10"
"0x251ef10" [label=183,style=filled,fillcolor=black,fontcolor=white]
null15 [shape=point];
"0x251ef10" -> null15;
"0x251ef10":se -> "0x251eea0"
"0x251eea0" [label=193,style=filled,fillcolor=red]
null16 [shape=point];
"0x251eea0" -> null16;
null17 [shape=point];
"0x251eea0" -> null17;
}
}
Upvotes: 3
Views: 641
Reputation: 8464
What cause the change of order is the edge from the right subgraph to the 86 node. You can add another invisible edge to the left 183 node and that will fix the problem:
digraph ptree {
subgraph cluster_3 {
"0x2518250" [label=177,style=filled,fillcolor=black,fontcolor=white]
"0x2518250":sw -> "0x25181e0"
"0x25181e0" [label=86,style=filled,fillcolor=black,fontcolor=white]
null10 [shape=point];
"0x25181e0" -> null10;
"0x25181e0":se -> "0x251a7e0"
"0x251a7e0" [label=115,style=filled,fillcolor=red]
null11 [shape=point];
"0x251a7e0" -> null11;
null12 [shape=point];
"0x251a7e0" -> null12;
"0x2518250":se -> "0x251fc00"
"0x251fc00" [label=183,style=filled,fillcolor=black,fontcolor=white]
null13 [shape=point];
"0x251fc00" -> null13;
null14 [shape=point];
"0x251fc00" -> null14;
}
subgraph cluster_4 {
"0x251ef80" [label=177,style=filled,fillcolor=black,fontcolor=white]
"0x251ef80":sw -> "0x25181e0"
"0x251ef80":sw -> "0x251fc00" [style=invis] # <--- here is the change
"0x251ef80":se -> "0x251ef10"
"0x251ef10" [label=183,style=filled,fillcolor=black,fontcolor=white]
null15 [shape=point];
"0x251ef10" -> null15;
"0x251ef10":se -> "0x251eea0"
"0x251eea0" [label=193,style=filled,fillcolor=red]
null16 [shape=point];
"0x251eea0" -> null16;
null17 [shape=point];
"0x251eea0" -> null17;
}
}
Upvotes: 1