栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

#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<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/743534.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号