一、二叉树的构造
同一棵二叉树具有唯一先序序列、中序序列和后序序列。
但不同的二叉树可能具有相同的先序序列、中序序列和后序序列。
给定先序、中序和后序遍历序列可以唯一确定这棵二叉树的树形。
仅由一个先序序列(或中序序列、后序序列),无法确定这棵二叉树的树形。
定理1:任何n(n≥0)个不同节点的二又树,都可由它的中序序列和先序序列唯一地确定。
由上述定理得到以下构造二叉树的算法:
BTNode *CreateBT1(char *pre,char *in,int n){ BTNode *s; char *p; int k;
if (n<=0) return NULL;
s=(BTNode *)malloc(sizeof(BTNode));//创建节点
s->data=*pre;
for (p=in;p<in+n;p++)//在中序中找为*ppos的位置k
if (*p==*pre)
break;
k=p-in;
s->lchild=CreateBT1(pre+1,in,k); //构造左子树
s->rchi