2016-12-17 16 views
0

주어진 순서대로 선주문을 얻는 방법 C#의 선주문 및 선주문?C#에서 주어진 InOrder 및 PreOrder에서 postOrder를 가져 오는 방법은 무엇입니까?

In Order: 8,4,10,9,11,2,5,1,6,5,7. 
Pre-order: 1,2,4,8,9,10,11,5,3,6,7. 

이 주문 및 예약 주문에 나는이 텍스트 상자에서 얻을 및 기타 텍스트 상자에 버튼을 누르면 내가 우편 주문 결과를 표시 할 때.

나는 이미 C++로 해결했지만 PostOrder 함수에 C# 문제가 있습니다.

int search(int arr[], int x, int n) 
{ 
    for (int i = 0; i < n; i++) 
    if (arr[i] == x) 
     return i; 
    return -1; 
} 

// Prints postorder traversal from given inorder and preorder traversals 
void printPostOrder(int in[], int pre[], int n) 
{ 
    // The first element in pre[] is always root, search it 
    // in in[] to find left and right subtrees 
    int root = search(in, pre[0], n); 

    // If left subtree is not empty, print left subtree 
    if (root != 0) 
     printPostOrder(in, pre+1, root); 

    // If right subtree is not empty, print right subtree 
    if (root != n-1) 
     printPostOrder(in+root+1, pre+root+1, n-root-1); 

    // Print root 
    cout << pre[0] << " "; 
} 
+0

을 시도하고 당신이 정확히 어떤 도움이 필요? – Abion47

+0

와 포스트 오더 기능 나는 어떻게 C#에서 똑같이 해봅시다.하지만이 부분은 이해할 수 없다. 포스트 오더 기능을 가진 –

+0

나는 어떻게 C에서 똑같이 해 보겠다. 나에게 엽서를위한 어떤 함수 –

답변

0

 int search(int[] arr, int x, int n) 
     { 
      for (int i = 0; i < n; i++) 
      if (arr[i] == x) 
       return i; 
      return -1; 
     } 

     // Prints postorder traversal from given inorder and preorder traversals 
     void printPostOrder(int[] _in, int[] pre, int n) 
     { 
      // The first element in pre[] is always root, search it 
      // in in[] to find left and right subtrees 
      int root = search(_in, pre[0], n); 

      // If left subtree is not empty, print left subtree 
      if (root != 0) 
       printPostOrder(_in, pre.Skip(1).ToArray(), root); 

      // If right subtree is not empty, print right subtree 
      if (root != n-1) 
       printPostOrder(_in.Skip(root+1).ToArray(), pre.Skip(root+1).ToArray(), n-root-1); 

      // Print root 
      Console.Write(pre[0].ToString() + " "); 
     } 
+0

사람에게 축복을 보냅니다. –