2013-10-30 4 views
-5

3도 트리의 inorder traversal (왼쪽, 노드, 중간, 오른쪽) 알고리즘을 작성하려고합니다.3도 트리의 재귀 및 비회회 트래킹

아래에 올바른 알고리즘이 있습니까?

inorder(node) 
{ 
    if (node) { 
    inorder(node->left); 
    print("%d", node->value); 
    if (node->mid) { 
     inorder(node->mid); 
     print("%d", node->value); 
     inorder(node->right); 
    } 
    else 
     inorder(node->right); 
    } 
} 
+0

노드 값을 두 번 인쇄하고 있습니다. 또, node가 null의 경우, 그 외의 문장에는 IMO가 없어야합니다. –

+0

degree = 3은 모든 노드에서 true이거나 1 <= degree <= 3입니다. 가지가 있는지 확인한 다음 간단히 실행해야합니다. – user568109

+0

@ user568109 3도 나무에만 이것을 실행하고 싶습니다 ... 작동하거나 문제가 있습니다 .. ?? – Vaibhav

답변

0

잘못 노드 값을 두 번 인쇄하고 있습니다.

inorder(node->mid);에서 확인하면 node->mid을 확인할 필요가 없습니다.

inorder(node) 
{ 
    if (node) 
    { 
    inorder(node->left); 
    print("%d ", node->value); 
    inorder(node->mid); 
    inorder(node->right); 
    } 
} 
+0

진정한 고마워요 !! :) – Vaibhav