297 二叉樹的序列化與反序列化

2021-10-07 06:11:31 字數 1659 閱讀 7212

序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。

請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 / 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以被序列化為乙個字串並且將這個字串反序列化為原始的樹結構。

示例:

你可以將以下二叉樹:

1/ \

2 3

/ \4 5

序列化為 「[1,2,3,null,null,4,5]」

說明: 不要使用類的成員 / 全域性 / 靜態變數來儲存狀態,你的序列化和反序列化演算法應該是無狀態的。

dfs

/**

* definition for a binary tree node.

* public class treenode

* }*/public

class

codec

stringbuffer res =

newstringbuffer()

;dfs

(root,res)

;// system.out.println(res.tostring());

return res.

tostring()

;}public

void

dfs(treenode root,stringbuffer str)

else

}// decodes your encoded data to tree.

public treenode deserialize

(string data)

arraydeque

res =

newarraydeque

(arrays.

aslist

(datalist));

// system.out.println(res.tostring());

return

ddfs

(res);}

public treenode ddfs

(arraydeque

res)

treenode root =

newtreenode()

;// system.out.println(integer.parseint(res.getfirst()));

root.val = integer.

parseint

(res.

getfirst()

);res.

removefirst()

; root.left =

ddfs

(res)

; root.right =

ddfs

(res)

;return root;}}

// your codec object will be instantiated and called as such:

// codec codec = new codec();

// codec.deserialize(codec.serialize(root));

297 二叉樹的序列化與反序列化

題目 序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以...

297 二叉樹的序列化與反序列化

二叉樹的序列化與反序列化 序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需...

297 二叉樹的序列化與反序列化(Python)

序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以被序列...