2016-12-17 14 views
1

나는이받는 방법은 GraphVIZ DOT 이진 트리를 표현하기 위해 올바르게

digraph BST { 
    node [fontname="Arial"]; 
    1 -> 0.4; 
    0.4 -> 0.19; 
    null0 [shape=point]; 
    0 -> null0; 
    null1 [shape=point]; 
    0 -> null1; 
    0.4 -> 0.21; 
    null2 [shape=point]; 
    0 -> null2; 
    null3 [shape=point]; 
    0 -> null3; 
    1 -> 0.6; 
    0.6 -> 0.21; 
    0.21 -> 0.09; 
    null4 [shape=point]; 
    0 -> null4; 
    null5 [shape=point]; 
    0 -> null5; 
    0.21 -> 0.12; 
    null6 [shape=point]; 
    0 -> null6; 
    null7 [shape=point]; 
    0 -> null7; 
    0.6 -> 0.39; 
    null8 [shape=point]; 
    0 -> null8; 
    null9 [shape=point]; 
    0 -> null9; 
} 

그리고 이것은 출력 graphviz dot output 문제입니다 내가 0.21NODE(0.4)의 왼쪽 자식 할 것입니다이 다음 DOT 코드와 NODE(0.6) , NODE(0.4)0.21을 하나가 아닌 두 개의 별도 노드로 나타내도록하고 싶습니다.

참고 : null이 자동 생성됩니다. 나중에 고칠 것입니다.

다음과 같이 출력하고 싶습니다.

enter image description here

도트 코드에 어떤 변화를해야 하는가?

- 고마워요.

답변

4

노드 이름과 레이블을 구분해야합니다.

digraph BST { 
    node [fontname="Arial" ]; 
    l1 [ label = "1" ]; 
    l21 [ label = "0.4" ]; 
    l22 [ label = "0.6" ]; 
    l31 [ label = "0.21" ]; 
    l32 [ label = "0.19" ]; 
    l33 [ label = "0.21" ]; 
    l34 [ label = "0.39" ]; 
    l41 [ label = "0.09" ]; 
    l42 [ label = "0.12" ]; 

    l1 -> { l21 l22 }; 
    l21 -> { l31 l32 }; 
    l22 -> { l33 l34 }; 
    l31 -> { l41 l42 }; 
} 

enter image description here

을 생산