2016-07-20 64 views
3

Ich visualisieren eine Reihe von binären Bäumen mit dot/graphviz, wo jeder Baum rückwärts auf vorherige Bäume zeigen kann. Das Problem, das ich habe, ist, dass ich Kindknoten zwingen möchte, auf der linken oder rechten Seite von ihrem Elternteil zu sein. Beachten Sie unten, dass in der ersten Box die Pfeile, die aus dem Elternteil 177 kommen, auf der richtigen Seite sind, aber die Kinder sind umgekehrt. Wie kann ich die Kinder zwingen, auf der richtigen Seite zu sein?Erzwingen Links-rechts-Knoten Reihenfolge in Graphviz/Dot Tree Visualisierung

enter image description here

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; 
} 
} 

Antwort

1

Was die Änderung der Ordnung Ursache ist die Kante von der rechten Subgraphen zu dem Knoten 86. Sie können eine andere unsichtbare Kante auf der linken Seite 183 Knoten hinzufügen, und das wird das Problem beheben:

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; 
} 
} 

output