2016-04-22 7 views
0

В простом двоичном дереве, я был в состоянии сделать график выглядеть правильно, добавив невидимые узлы и невидимые края, например, из:Как выбрать, на какой стороне находится узел, в простом двоичном дереве?

digraph 
{ 
     vertex_1 [label="A"]; 
     vertex_2 [label="B"]; 
     vertex_2 -> vertex_1 [label="Left"]; 
} 

, который производит:

enter image description here

к:

digraph 
{ 
     vertex_1 [label="A"]; 
     vertex_2 [label="B"]; 
     vertex_0 [style=invis]; 
     vertex_2 -> vertex_1 [label="Left"]; 
     vertex_2 -> vertex_0 [style=invis]; 
} 

, который производит:

enter image description here

Но когда я попробовал этот трюк с графом в 4 узла (он был изначально прямо вверх и вниз), вот что я получил:

digraph 
{ 
     vertex_1 [label="A"]; 
     vertex_2 [label="B"]; 
     vertex_3 [label="F"]; 
     vertex_4 [label="G"]; 
     vertex_01 [style=invis]; 
     vertex_02 [style=invis]; 
     vertex_03 [style=invis]; 
     vertex_4 -> vertex_3 [label="Left"]; 
     vertex_3 -> vertex_1 [label="Left"]; 
     vertex_1 -> vertex_02 [style=invis]; 
     vertex_4 -> vertex_03 [style=invis]; 
     vertex_3 -> vertex_01 [style=invis]; 
     vertex_1 -> vertex_2 [label="Right"]; 
} 

который произвел:

enter image description here

Очевидно, я хочу, чтобы B находился в правой части A. Я попытался переключить порядок действия невидимого края и фактического края от B до A, как тот, который был первым, но который не отличается от сть. Как я могу сказать программе поставить конкретный узел или ребро на определенную сторону?

ответ

1

Для заказа слева направо требуется порядок создания узла. Левый узел должен быть создан до его правого брата.

digraph 
{ 
    vertex_1 [label="A"]; 
    vertex_02 [style=invis]; 
    vertex_2 [label="B"]; 
    vertex_3 [label="F"]; 
    vertex_4 [label="G"]; 
    vertex_01 [style=invis]; 
    vertex_03 [style=invis]; 
    vertex_4 -> vertex_3 [label="Left"]; 
    vertex_3 -> vertex_1 [label="Left"]; 
    vertex_1 -> vertex_02 [style=invis]; 
    vertex_4 -> vertex_03 [style=invis]; 
    vertex_3 -> vertex_01 [style=invis]; 
    vertex_1 -> vertex_2 [label="Right"]; 
} 

enter image description here