首先我們介紹二叉樹先序序列化的方式,假設序列化的結果字串為str,初始時str等於空字串。先序遍歷二叉樹,如果遇到空節點,就在str的末尾加上「#!」,「#」表示這個節點為空,節點值不存在,當然你也可以用其他的特殊字元,「!」表示乙個值的結束。如果遇到不為空的節點,假設節點值為3,就在str的末尾加上「3!」。現在請你實現樹的先序序列化。
給定樹的根結點root,請返回二叉樹序列化後的字串。
我的提交
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
treetostring:
deftostring
(self, root):
# write code here
ifnot root:
return
'#!'
stack =
string = ''
while stack:
node = stack.pop()
if node:
string += str(node.val) + '!'
else:
string += '#!'
return string
參***
/*
struct treenode
};*/
class treetostring
void convert(treenode* root,string &ret)
ret = ret + getstring(root->val) + "!";
convert(root->left,ret);
convert(root->right,ret);
}string tostring(treenode* root)
};
序列化二叉樹和反序列化二叉樹
題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點...
(二叉樹)二叉樹的序列化與反序列化
序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以被序列...
二叉樹的序列化與反序列化 二叉樹
序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以被序列...