面試題37 序列化二叉樹

2021-10-11 07:24:15 字數 1400 閱讀 2516

題目:請實現兩個函式,分別用來序列化和反序列化二叉樹。

如:將樹序列化為字串 「[1,2,3,null,null,4,5]」

還要將字串反序列化為二叉樹

序列化方法

佇列進行層次遍歷,把結點乙個個加入到結果集中

反序列化方法

根據二叉樹結點之間的運算關係進行求解,若結點 cur 的下標為 x ,那麼其左子結點下標為 2 * x + 1,右子節點的下標為 2 * x + 2。雖然知道了結點下標的關係,但是還是需要遍歷樹,需要用佇列來模擬。

public

class

codec

stringbuilder res =

newstringbuilder

("[");

queue

queue =

newlinkedlist

<

>()

; queue.

offer

(root)

;while

(!queue.

isempty()

)else

} res.

deletecharat

(res.

length()

-1);

res.

("]");

return res.

tostring()

;}// decodes your encoded data to tree.

public treenode deserialize

(string data)

string[

] vals = data.

substring(1

, data.

length()

-1).

split

(",");

treenode root =

newtreenode

(integer.

parseint

(vals[0]

)); queue

queue =

newlinkedlist

<

>()

; queue.

offer

(root)

;int i =1;

while

(!queue.

isempty()

) i++;if

(!vals[i]

.equals

("null"))

i++;}

return root;

}}

面試題37 序列化二叉樹

題目 請實現兩個函式,分別用來序列化和反序列化二叉樹。演算法思想 根據前序遍歷規則完成序列化與反序列化。所謂序列化指的是遍歷二叉樹為字串 所謂反序列化指的是依據字串重新構造成二叉樹。依據前序遍歷序列來序列化二叉樹,因為前序遍歷序列是從根結點開始的。當在遍歷二叉樹時碰到null指標時,這些null指標...

面試題37 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。序列化 我們可以按照樹的前序遍歷的方式,將樹中的資料讀出放到乙個序列裡。這裡,對於結點是null的,也要表示出來,用以區分,這裡用 作為null結點,對於非null的結點,就取出它們的值放入序列,另外,各個值之間用,隔離開,方便區分。反序列化 根據前面...

面試題37 序列化二叉樹

輸入一棵二叉樹,將其序列化為char 並且支援反序列化為二叉樹。解題思路 執行結果沒問題,但是未通過所有測試案例。include include include include include listnode.h include treenode.h include graph.h using n...