<劍指Offer>面試題37: 序列化二叉樹

題目描述

  • 請實(shí)現(xiàn)兩個(gè)函數(shù),分別用來序列化和反序列化二叉樹

題目解讀

  • 劍指Offer 194
  • 參考書上寫的,遞歸思想寫的,在??途W(wǎng)上不知為啥沒跑通,但在本地跑通了,很好,時(shí)間原因不在牛客網(wǎng)調(diào)試了

代碼

#include<iostream>
using namespace std;

typedef struct node{
    char val;            //節(jié)點(diǎn)信息
    struct node *left;   //左孩子
    struct node *right;  //右孩子
}TreeNode;

// 反序列化二叉樹
TreeNode* DeserializeCore(char str[], int *length){
    if(str[(*length)] == '$'){
        (*length)++;
        return NULL;
    }
    else{
        TreeNode* temp = new TreeNode();
        temp->val = str[(*length)];
        temp->left = temp->right = NULL;
        (*length)++;
        temp->left  = DeserializeCore(str, length);
        temp->right = DeserializeCore(str, length); 
        return temp;
    }
}

//創(chuàng)建一顆二叉樹
TreeNode* create(){
    char tt[20] = {'1', '2', '4', '$', '$', '$', '3', '5', '$', '$', '6', '$', '$'};
    int length = 0;
    TreeNode* root;

    root = DeserializeCore(tt, &length);
    return root;
}

void SerializeCore(TreeNode *root, char result[], int *length){
    if(root == NULL){
        result[(*length)] = '$';
        (*length)++;
    }
    else{
        result[(*length)] = root->val;;
        (*length)++;
        SerializeCore(root->left, result, length);
        SerializeCore(root->right, result, length);
    }
}

// 序列化二叉樹
char* Serialize(TreeNode *root) {    
        int length = 0;
        static char result[100];
       
        SerializeCore(root, result, &length);
        result[length] = '\0';
        return result;
}

// 前序遍歷
void qianxu(TreeNode* root){
    if(root){
        cout<<root->val<<" ";
        qianxu(root->left);
        qianxu(root->right);
    }
}

int main(){
    TreeNode* root;
    root = create();
    qianxu(root);
    cout<<endl;
    
    char* ss = Serialize(root);
    cout<<ss;
    return 0;
}

總結(jié)展望

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • “我非他不嫁?!?“我非她不娶?!?這兩句話以前看起來是信誓旦旦的承諾,現(xiàn)在被我聽到就覺得孩子氣太多。 像我這么沒...
    _鎖閱讀 595評論 0 1
  • 第五章 化身 “你你你你。。。二十年,你不是死了嗎?”原諒我真的想不起來他的名字了。 “主人,您還是一如既往的慫啊...
    圖七上層閱讀 422評論 2 3
  • 除夕當(dāng)天,我們策劃一個(gè)網(wǎng)絡(luò)直播活動(dòng),邀請幾位外國留學(xué)生到市民家庭過年吃團(tuán)圓飯,初衷是讓外國人了解中國的年俗。 開始...
    人間四月天天閱讀 518評論 0 7

友情鏈接更多精彩內(nèi)容