두 갈래 나무의 앞 순서에서 뒷순서로 앞 순서를 유도하다

8732 단어
두 갈래 나무의 앞 순서에서 뒷순서로 앞 순서를 유도하다
#include
using namespace std;
int pre[10] = {3, 7, 11,21,30,9,70};
int in[10] = {11, 7, 30, 21, 3, 9, 70};
int post[10] ={11, 30, 21, 7, 70, 9, 3};

// 
void postorder(int root, int st, int ed)
{
  if(st > ed)
    return;
  int i = st;
  while(in[i] != pre[root])
    i++;
  postorder(root + 1, st, i - 1);
  postorder(root + 1 + i - st, i + 1, ed);
  cout<<in[i]<<" ";
}
// 
void preorder(int root, int st, int ed)
{
  if(st > ed)
    return;
  int i = st;
  while(in[i] != post[root])
    i++;
  cout<<in[i]<<" ";
  preorder(root - (ed - i + 1), st, i - 1);
  preorder(root - 1, i + 1, ed);
}

int main()
{
  preorder(6, 0, 6);
  postorder(0, 0, 6);
  return 0;
}

좋은 웹페이지 즐겨찾기