欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

前序、中序遍历转后序遍历

时间:2023-04-28

#include using namespace std;struct TreeNode{ char data; TreeNode*leftChild; TreeNode*rightChild; TreeNode(char c):data(c),leftChild(nullptr),rightChild(nullptr){}; //构造函数};TreeNode*Build(string preOrder,string inOrder){ //根据先序和中序序列建树 if(preOrder.size()==0) return nullptr; //递归终止 char c=preOrder[0]; TreeNode*root=new TreeNode(c); int position=inOrder.find(c); root->leftChild=Build(preOrder.substr(1,position),inOrder.substr(0,position)); //从1开始,长度是position root->rightChild=Build(preOrder.substr(position+1),inOrder.substr(position+1)); //从position+1开始一直到结束 return root;}void PostOrder(TreeNode *root){ //后序遍历 if(root==nullptr) return; PostOrder(root->leftChild); PostOrder(root->rightChild); printf("%c",root->data);}int main() { string preOrder,inOrder; while(cin>>preOrder>>inOrder){ TreeNode *root=Build(preOrder,inOrder); PostOrder(root); cout<

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。