赞
踩
假设先序遍历为:abcdefghi(根 左 右)
中序遍历为:bcaedghfi (左 根 右)
#include<stdio.h> #include<stdlib.h> typedef struct node{ char data; struct node *lchild,*rchild; }node,*tree; tree creat(char *a,char *b,int n) { tree t; //char a[0]=a; int i=0,len; if(n<=0) return; t=(tree)malloc(sizeof(node)); t->data=a[0]; while(b[i]!=a[0]) { i++; } len=n-i-1; t->lchild=creat(a+1,b,i); t->rchild=creat(a+i+1,b+i+1,len); printf("%c",t->data); return t; } int main() { char a[20],b[20]; tree t; int n; printf("请先输入长度/n"); n=scanf("%d",&n); printf("请先输入先序序列/n"); scanf("%s",a); printf("请输入中序序列/n"); scanf("%s",b); creat(a,b,n); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。