算法:序列化二叉樹
2022-09-28 15:17 作者:做架構(gòu)師不做框架師 | 我要投稿

請實現(xiàn)兩個函數(shù),分別用來序列化和反序列化二叉樹。
你需要設計一個算法來實現(xiàn)二叉樹的序列化與反序列化。這里不限定你的序列 / 反序列化算法執(zhí)行邏輯,你只需要保證一個二叉樹可以被序列化為一個字符串并且將這個字符串反序列化為原始的樹結(jié)構(gòu)。
示例

輸入:root = [1,2,3,null,null,4,5]
輸出:[1,2,3,null,null,4,5]
方法:層序遍歷BFS
序列化:

借助隊列,對二叉樹進行層序遍歷,而且為了表示二叉樹的完整性,我們也會把 null 節(jié)點也記錄下來。
代碼如下:

復雜度分析
時間復雜度:O(N),N為二叉樹的節(jié)點數(shù)。
空間復雜度:O(N) 。
反序列化:
序列化后的字符串為“[1,2,3,null,null,4,5,null,null,null,null]”,歸納整理為下表:

代碼如下:

復雜度分析
時間復雜度:O(N) ,N 為二叉樹的節(jié)點數(shù)。
空間復雜度: O(N) 。
END
勤奮是成功之母,懶惰乃萬惡之源,贈友人。
好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。

標簽: