297 二叉樹的序列和反序列化 前序實現

2021-10-06 23:03:25 字數 1132 閱讀 7751

設計乙個演算法實現二叉樹的序列化和反序列化

序列化:當前節點為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 二叉樹的序列化與反序列化

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