#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void PostOrderTraverse(const char *preStart, const char *preEnd, const char *inStart, const char *inEnd)
{
char root = *preStart;
int len = preEnd - preStart,i = 0;
for(;*(inStart+i) != root && i<=len; i++); //查找根结点在中序的位置
if (i != 0)
{//如果不是第一个,说明其含有左子树
PostOrderTraverse(preStart+1, preStart+i, inStart, inStart+i-1);
}
if (i != len)
{//如果不是最后一个,说明其含有右子树
PostOrderTraverse(preStart+i+1, preEnd, inStart+i+1, inEnd);
}
printf("%c",root);
}
int main()
{
char *s1 = "ABCDEF";
char *s2 = "CBAEDF";
PostOrderTraverse(s1,s1+strlen(s1)-1, s2,s2+strlen(s2)-1);
printf("\n");
return 0;
}
数据结构 前序中序求后序
最新推荐文章于 2023-04-19 22:51:42 发布