再谈poj2255_解题报告

上一篇解题报告的解法是比较简单,但并不精巧

而下面的代码是更精巧的代码(代码源于是一位名为sgxiao的师兄)


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct Node{
	char ch;
	struct Node *left;
	struct Node *right;
}Node; 

char mid[27];
char pre[27];
int n = -1;

void make_tree(int i, int j);

int main(void)
{
	int i, j, k;
	while(scanf("%s%s", pre, mid) == 2) {
		make_tree(0, strlen(pre) - 1);
		printf("\n");
		n = -1;
	}
	return 0;
}

void make_tree(int i, int j)
{
  int k;
  if(i > j) return;
  n++;
  for(k = i; k <= j; k++) {
    if(pre[n] == mid[k]) {
      break;
    }
  }
  make_tree(i, k - 1);
  make_tree(k + 1, j);
  printf("%c", mid[k]);

}

你可能感兴趣的:(poj,poj,poj,中序遍历,二叉树遍历,前序遍历)