序列化二叉樹

請實現(xiàn)兩個函數(shù),分別用來序列化和反序列化二叉樹

語言java
算法分析:

我們可以采用先序遍歷的思想,只是在這里需要改動。為了能夠在重構(gòu)二叉樹時結(jié)點能夠插入到正確的位置,在使用先序遍歷保存二叉樹到文件中的時候需要把NULL結(jié)點也保存起來(可以使用特殊符號如“#”來標(biāo)識NULL結(jié)點)。
假定二叉樹如下所示:


則使用先序遍歷,保存到文件中的內(nèi)容如下:

30 10 50 # # # 20 45 # # 35 # #

import java.util.*;
public class Solution {
    String Serialize(TreeNode root) {
        if(root == null)
            return "#,";
        String res = root.val + ",";
        res += Serialize(root.left);
        res += Serialize(root.right);
        return res;
  }
    TreeNode Deserialize(String str) {
       String[] strings = str.split(",");
       Queue<String> queue = new LinkedList<String>();
       for(int i = 0;i<strings.length;i++)
       {
           queue.offer(strings[i]);
       }
       return Deserialize(queue);
       
   }
    TreeNode Deserialize(Queue<String> queue){
        String value = queue.poll();
        if(value.equals("#")){
            return null;
        }
        TreeNode node = new TreeNode(Integer.valueOf(value));
        node.left = Deserialize(queue);
        node.right = Deserialize(queue);
        return node;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 二叉樹的遍歷、按層打印、序列化 這三個操作是不一樣的 二叉樹的遍歷常用遞歸的形式,那前序遍歷來說,先訪問根結(jié)點,在...
    Tony_Huang閱讀 473評論 0 0
  • 題目描述 請實現(xiàn)兩個函數(shù),分別用來序列化和反序列化二叉樹 二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結(jié)果以...
    shenghaishxt閱讀 307評論 0 0
  • 題目37:序列化二叉樹 請實現(xiàn)兩個函數(shù),分別用來序列化和反序列化二叉樹。將樹寫入一個文件被稱為“序列化”,讀取文件...
    stoneyang94閱讀 297評論 0 0
  • 題目:請實現(xiàn)兩個函數(shù),分別用來序列化和反序列化二叉樹 二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結(jié)果以某種...
    GIndoc閱讀 317評論 0 0
  • 題目 請實現(xiàn)兩個函數(shù),分別序列化和反序列化二叉樹。這里的序列化指的是將一棵二叉樹保存到文件中,反序列化就是從文件中...
    Longshihua閱讀 197評論 0 1

友情鏈接更多精彩內(nèi)容