题意:
给出前序遍历序列和中序遍历序列,求后序遍历序列
首先要根据前序和中序把树建立起来,再写后序遍历就好~思路很简单结果还是被我写跪了,看了好些博文,感觉,,好吧不算是什么小技巧,是我编码太渣太渣。。
有两个地方借鉴了,于是我居然很有兴致的把自己的也详细详细的全注解上了,要是平时也有耐心这样多好。。就不会过两天总是不知道自己在干啥。。
#include<stdio.h>
#include<stdlib.h>
typedef struct Tree{
Tree *left;
Tree *right;
int value;
}Tree;
Tree *root;
Tree* create(int *preorder,int *inorder,int n)
{
Tree *temp;
for(int i=0;i<n;i++)
{
if(preorder[0]==inorder[i])//前者是根,如果在中序找到这个根
{
temp=(Tree*)malloc(sizeof(Tree));//开辟新结点
temp->value=inorder[i];//该结点的值就是找到的当前根的值
//这里直接移指针,表示之前还写循环来着ORZ。。
temp->left=create(preorder+1,inorder,i);//通过+1把前序序列已经找过的结点移出去,因为是左子树,所以中序指针不变
temp->right=create(preorder+i+1,inorder+i+