菜鸡继续打卡~贴代码,日后补充。
与昨天的求后序遍历代码相似,昨天的偷懒了,没有建树过程。
/**dandelion
*
* 2017-08-10
* 已知中序遍历和后序遍历的结果求前序遍历
*
*/
#include <iostream>
using namespace std;
typedef struct BinaryNode
{
struct BinaryNode *left,*right;
char data;
};
BinaryNode *changeToDLR(char *mid,char *lat,int length)
{
if(0==length)
return NULL;
BinaryNode *node = new BinaryNode;
node->data=*(lat+length-1);
cout<<node->data;
int index= 0;
for( ; index<length; index++)
if(mid[index]==lat[length-1])
break;
node->left = changeToDLR(mid,lat,index);
node->right = changeToDLR(mid+index+1,lat+index,length-index-1);
}
int main()
{
char *mid="gdbxajmec";
char *lat="gbxdmjcea";
changeToDLR(mid,lat,9);
return 0;
}