using namespace std; //#define _USE_MATH_DEFINES //#include<math.h>
struct TreeNode {
char data;
TreeNode * leftchild;
TreeNode * rightchild;
};
TreeNode * rebuild(string InOrder,string lastOrder) {
if (lastOrder.size()==0) {
return NULL;
}
else
{
char rootdata = lastOrder[lastOrder.size()-1];
TreeNode * pNewNode = new TreeNode;
pNewNode->data = rootdata;
int pos= InOrder.find(rootdata);
//切割字符左右 中:左根右。后:左右根
string str1 =InOrder.substr(0,pos);
string str2 = lastOrder.substr(0, pos);
string str3 = InOrder.substr(pos + 1);
string str4 = lastOrder.substr(pos, lastOrder.size() - 1-pos);
pNewNode->leftchild = rebuild(str1, str2);
pNewNode->rightchild = rebuild(str3, str4);
return pNewNode;
}
}
//前序遍历 void PerOrder(TreeNode * root) {
if (root == NULL) {
return;
}
printf("%c", root->data);
PerOrder(root->leftchild);
PerOrder(root->rightchild);
}
int main() {
TreeNode * root = NULL;//根节点
char charList1[15];
char charList2[15];
//读入中序
fgets(charList1,8,stdin);
//读入后序
fgets(charList2, 8, stdin);
string str1 = charList1;
string str2 = charList2;
queue<QueneNode *> myQueue;//队列每个元素存储新结点的父节点和左孩子情况
str1.pop_back();
str2.pop_back();
root = rebuild( str1, str2);
//二叉树的插入建立
PerOrder(root);
}
能不能不要惦记着你的本地文件 pch.h
了 #include "pch.h"
我看你 CE 一页了
//四天前已经回帖告诉你了但是大概率你没看到 你自己回去看
。゚・ (⁄ ⁄>⁄ ︿ ⁄<⁄ ⁄) ・゚。