c++

4396y 发表于 1年前 · 关联问题 二叉树的遍历

include "pch.h"

include

include

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);

}

lr580 发表于 1年前

能不能不要惦记着你的本地文件 pch.h#include "pch.h"

我看你 CE 一页了

//四天前已经回帖告诉你了但是大概率你没看到 你自己回去看

。゚・ (⁄ ⁄>⁄ ︿ ⁄<⁄ ⁄) ・゚。