上一篇解题报告的解法是比较简单,但并不精巧
而下面的代码是更精巧的代码(代码源于是一位名为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]);
}

本文介绍了一种使用先序和中序遍历来构建二叉树的方法,并通过C语言实现。该方法通过递归地寻找每个子树的根节点来完成树的构建过程。
748

被折叠的 条评论
为什么被折叠?



