zoukankan      html  css  js  c++  java
  • 重建二叉树

    #include <iostream>
    #define TREELEN 6
    using namespace std;
    
    typedef struct Node
    {
        char chValue;
        struct Node* pLeft;
        struct Node* pRight;
    }*PNode;
    
    void LastOrder(PNode root)
    {
        if(root==0)return;
        LastOrder(root->pLeft);
        LastOrder(root->pRight);
        cout<<root->chValue<<" ";
    }
    
    PNode ReBuild(char* pPreOrder,char* pInOrder,int nTreeLen)
    {
    
        if(nTreeLen==0)return 0;
        if(nTreeLen==1)
        {
            PNode pRoot = new Node();
            pRoot->chValue = pPreOrder[0];
            pRoot->pLeft = 0;
            pRoot->pRight = 0;
            return pRoot;
        }
        if(pPreOrder==0 || pInOrder==0)return 0;
        PNode pRoot = new Node();
        pRoot->chValue = pPreOrder[0];
        pRoot->pLeft = 0;
        pRoot->pRight = 0;
        char *pLeftEnd = pInOrder;
        int nLeftLen = 0;
        while(pLeftEnd!=0 && *pPreOrder != *pLeftEnd)
        {
            nLeftLen++;
            pLeftEnd++;
            if(nLeftLen>nTreeLen)return 0;
        }
    
        int nRightLen = nTreeLen - nLeftLen - 1;
        cout<<nLeftLen<<" "<<nRightLen<<endl;
        if(nLeftLen>0)
        {
            pRoot->pLeft = ReBuild(pPreOrder+1,pInOrder,nLeftLen);
        }
        if(nRightLen>0)
        {
            pRoot->pRight = ReBuild(pPreOrder+nLeftLen+1,pInOrder+nLeftLen+1,nRightLen);
        }
        return pRoot;
    }
    
    int main()
    {
        char szPreOrder[TREELEN]={'a','b','d','c','e','f'};
        char szInOrder[TREELEN]={'d','b','a','e','c','f'};
        PNode root = ReBuild(szPreOrder,szInOrder,TREELEN);
        LastOrder(root);
        cout<<endl;
        return 0;
    }
  • 相关阅读:
    【APIO2008】免费道路[最小生成树 kruskal]
    【2019.8.13】
    【矩阵】
    [POI2008]BLO-Blockade [tarjan 割点]
    poj1458 最长公共子序列 (动态规划)
    最长上升子序列
    poj1163 数字三角形 (动态规划)
    快速幂 (分治)
    求排列的逆序数(分治)
    快速排序 (分治)
  • 原文地址:https://www.cnblogs.com/yanglf/p/2786079.html
Copyright © 2011-2022 走看看