61 序列化二叉樹

2021-08-20 12:52:11 字數 1073 閱讀 8889

請實現兩個函式,分別用來序列化和反序列化二叉樹

思路一:

選用vectorarr作為輔助,最後轉為int* 和char* 的資料型別,由於『#』不方便表示,因此用乙個不會出現的數0x23333代替。方法上是使用遞迴的先序遍歷。

**一:

/*

struct treenode

};*/

class solution

}treenode* dfs2(int** str) else

}char* serialize(treenode *root)

treenode* deserialize(char *str)

};

思路二:

與思路一相同,但整個過程不使用輔助陣列,直接用指標實現。由於需要讓char*向後移動並改變,因此形參值要設定為char**

**二:

/*

struct treenode

};*/

class solution

res[i] = '\0';

return res;

}void serialize(treenode *root, string &str)

string r = to_string(root->val); //可以是單個字元『5』,也可能是字串『555』

str += r;

str += ','; //用逗號將數字隔開

serialize(root->left, str);

serialize(root->right, str);

}treenode* deserialize(char *str)

treenode* deserialize(char **str)

int num = 0;

while(**str != '\0' && **str != ',')

treenode *root = new treenode(num);

if(**str == '\0') else

}};

61 序列化二叉樹

題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 思路 層次遍歷,非遞迴。其實是二叉樹的層次遍歷,對應於寬度優先搜尋,bfs。二叉樹的序列化,即給定二叉樹的根結點,按照某種遍歷方式將所有結點鏈結為乙個陣列或者字串。反序列化,即根據給定的序列重新恢復一棵二叉樹。例如一棵二叉樹 1 2 3 nu...

61 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...

61序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...