• poj2255


    重构二叉树,已知前序和中序,输出后序。

    #include <iostream>
    #include <cstring>
    using namespace std;

    struct treeNode
    {
     treeNode();
     char letter;
     treeNode* left;
     treeNode* right;
    };
    treeNode::treeNode()
    {
     left=NULL;
     right=NULL;
    }
    void AddNode(treeNode* node,bool left,bool right,char ch)
    {
     treeNode* tmpNode=new treeNode;
     tmpNode->letter=ch;

     if(true==left)
     {
      node->left=tmpNode;
     }
     else
     {
      node->right=tmpNode;
     }
    }
    int findSameLetter(char letter,char str[],int startPoint)
    {
     int len=0;
     for(int i=startPoint;str[i]!='/0';i++)
     {
      
      if(str[i]==letter)
      { 
       break;
      }
      len++;
      
     }
     return len;
    }
    void BuildTree(treeNode* cNode,char preStr[],char inStr[], int preStart,int inStart,int preEnd,int inEnd)
    {
     //把preStr[preStart]建立新的节点
     cNode->letter=preStr[preStart];
     //调用findSameStr[]找到左子树的共同字符串长度
     int len;
     len=findSameLetter(cNode->letter,inStr,inStart);
     if(len>0)//对左子树调用BuildTree  
     {
      cNode->left=new treeNode;
      BuildTree(cNode->left,preStr,inStr,preStart+1,inStart,preStart+len,inStart+len-1);
     }
     //对右子树调用BuildTree
     if(preStart+len+1<=preEnd)
     {
      cNode->right=new treeNode;
      BuildTree(cNode->right,preStr,inStr,preStart+len+1,inStart+len+1,preEnd,inEnd);
     }
    }
    void PostTravel(treeNode* node)
    {
     if(NULL!=node)
     {
      PostTravel(node->left);
      PostTravel(node->right);
      cout<<node->letter;
     }
     return;
    }
    int main()
    {
     char preStr[27];
     char inStr[27];
     int len;
     treeNode* rootNode=NULL;
     while(cin>>preStr>>inStr)
     {
      len=strlen(preStr)-1;
      rootNode=new treeNode;
      BuildTree(rootNode,preStr,inStr,0,0,len,len);
      PostTravel(rootNode);
      cout<<endl;
     }
     return 0;
    }

  • 相关阅读:
    15 手写数字识别-小数据集
    14 深度学习-卷积
    5.线性回归算法
    9、主成分分析
    8、特征选择
    4.K均值算法--应用
    6.逻辑回归
    12.朴素贝叶斯-垃圾邮件分类
    13、垃圾邮件2
    大数据应用期末总评
  • 原文地址:https://www.cnblogs.com/bester/p/3255804.html
Copyright © 2020-2023  润新知