二叉樹的序列化與反序列化
序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。
請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 / 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以被序列化為乙個字串並且將這個字串反序列化為原始的樹結構。
示例:你可以將以下二叉樹:
1
/
2 3/
4 5序列化為 「[1,2,3,null,null,4,5]」
使用ostringstream儲存先序遍歷得到的節點值,再使用istringstream讀入節點值並遞迴重建二叉樹。
c++**
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
codec
for(
;isize()
;i++
)return flag*num;
}void
ser(treenode* root,ostringstream& out)
out<>val<<
' ';
ser(root-
>left,out)
;ser
(root-
>right,out);}
treenode*
deser
(istringstream& in)
// encodes a tree to a single string.
string serialize
(treenode* root)
// decodes your encoded data to tree.
treenode*
deserialize
(string data)};
// your codec object will be instantiated and called as such:
// codec codec;
// codec.deserialize(codec.serialize(root));
leetcode297 二叉樹序列化與反序列化
沒看太懂 參考 先跟序列化 遞迴先根遍歷 class codec treenode deserialize string data private void serialize treenode root,ostringstream out else treenode deserialize ist...
Leetcode 297 二叉樹的序列化與反序列化
這絕對是最讓我抓狂的型別題,明明思路只是層次遍歷,但是字串什麼的卻很難處理。字串函式學習 include利用stringstream物件進行string與int相互轉換 int str int string s string to string int a 返回整數a對應的string string...
leetcode 二叉樹 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...