設計乙個演算法實現二叉樹的序列化和反序列化
序列化:當前節點為null時候,返回「#」。當前節點為數字時,字串累加數字+「!」。最後返回的字串結果就是1!2!##3!#
反序列化:建立陣列,使用!分割符號。然後將陣列的值放入佇列。佇列的值彈出,先彈出頭結點,如果是#則返回null,然後使用遞迴彈出head.left和head.right。(因為是遞迴,所以不用考慮迴圈問題。寫一次的**就思考一次的情況即可。)
public
static
class
treenode
}//先序序列化 null用#表示,每個節點之間用!相隔開
public
static string serialbypre
(treenode head)
string res = head.val +
"!";
res +=
serialbypre
(head.left)
; res +=
serialbypre
(head.right)
;return res;
}//先序反序列化,將字串放入陣列中,按照!分割放入。
//佇列能夠方便知道建立到哪個位置。
public
static treenode reconbyprestring
(string prestr)
return
reconpreorder
(queue);}
public
static treenode reconpreorder
(queue
queue)
//不為空時,就依次建立節點。按照 先序遍歷的方式建立。
treenode head =
newtreenode
(integer.
valueof
(value));
head.left =
reconpreorder
(queue)
; head.right =
reconpreorder
(queue)
;return head;
}
297 二叉樹的序列化與反序列化
題目 序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以...
297 二叉樹的序列化與反序列化
序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需要保證乙個二叉樹可以被序列...
297 二叉樹的序列化與反序列化
二叉樹的序列化與反序列化 序列化是將乙個資料結構或者物件轉換為連續的位元位的操作,進而可以將轉換後的資料儲存在乙個檔案或者記憶體中,同時也可以通過網路傳輸到另乙個計算機環境,採取相反方式重構得到原資料。請設計乙個演算法來實現二叉樹的序列化與反序列化。這裡不限定你的序列 反序列化演算法執行邏輯,你只需...