面試題37 序列化二叉樹

2021-10-02 19:31:27 字數 1024 閱讀 1806

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

序列化:我們可以按照樹的前序遍歷的方式,將樹中的資料讀出放到乙個序列裡。這裡,對於結點是null的,也要表示出來,用以區分,這裡用$作為null結點,對於非null的結點,就取出它們的值放入序列,另外,各個值之間用,隔離開,方便區分。

反序列化:根據前面序列化的序列,再結合前序遍歷,可以知道第乙個是根節點,再依次向後遍歷,當遍歷到的結點是$,表示碰到了null結點。對於此結點來說,它就不會繼續遞迴下去了。

package com.wsy;

class tree

public tree(int value)

public tree(int value, tree left, tree right)

public int getvalue()

public void setvalue(int value)

public tree getleft()

public void setleft(tree left)

public tree getright()

public void setright(tree right)

}public class main

public static tree init()

public static string serialize(tree tree)

return tree.getvalue() + "," + serialize(tree.getleft()) + serialize(tree.getright());

}public static tree deserialize()

tree tree = new tree(integer.parseint(array[index]));

tree.setleft(deserialize());

tree.setright(deserialize());

return tree;

}}

面試題37 序列化二叉樹

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

面試題37 序列化二叉樹

題目 請實現兩個函式,分別用來序列化和反序列化二叉樹。如 將樹序列化為字串 1,2,3,null,null,4,5 還要將字串反序列化為二叉樹 序列化方法 用佇列進行層次遍歷,把結點乙個個加入到結果集中 反序列化方法 根據二叉樹結點之間的運算關係進行求解,若結點 cur 的下標為 x 那麼其左子結點...

面試題37 序列化二叉樹

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