請實現兩個函式,分別用來序列化和反序列化二叉樹。
兩個函式分別是:
char
*serialize
(treenode *root)
treenode*
deserialize
(char
*str)
系列化和反系列化都應該是一樣的遍歷方式,或者前序遍歷或者中序遍歷或者後序遍歷。但是為了方便,我們使用前序遍歷,第乙個字元就是根節點。
序列化的時候,空節點我們使用』#『來標誌,val直接我們使用』,'來分割。
反系列化的時候,因為遞迴的時候,str的值要相應改變,要麼使用char* &str或者char** str。
具體過程看**。
char
*serialize
(treenode *root)
treenode*
decode
(char
*&str)
int num =0;
while
(*str !=
',')
num =
10* num +
*str++
-'0'
;//跳過字元','
++str;
treenode* root = new treenode
(num)
; root->left =
decode
(str)
; root->right =
decode
(str)
;return root;
}treenode*
deserialize
(char
*str)
劍指offer 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹。首先得理解題目的意思,序列化就是返回乙個帶有 和逗號的字串。反序列化就是根據帶有 和逗號的字串返回一棵二叉樹。比如對於二叉樹 1 2 3 4 5 6 7來講,序列化的結果是1,2,3,4,7,5,而反序列化的結果則是輸出一棵二叉樹。public cla...
劍指Offer 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 根據前面的面試題重建二叉樹,我們知道可以從前序遍歷和中序遍歷構造出一棵二叉樹。受此啟發,我們可以先把一棵二叉樹序列化成乙個前序遍歷序列和乙個中序序列的結合,然後再反序列化時通過這兩個序列重構出原二叉樹。但是這個思路有兩個缺點。乙個缺點是該方法要求二叉樹...
劍指offer 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 首先這道題目是要有兩個問題,第乙個是把一棵二叉樹按照前序遍歷的方式變成乙個字串。第二個是把乙個字串變成乙個二叉樹。對於第乙個問題來說,我們要對這棵樹進行乙個前序遍歷,按照中左右的方式放入列表中,如果節點為空,則插入 最後.join 來實現列表到字串的轉...