美文网首页
序列化二叉树

序列化二叉树

作者: 克里斯加德纳 | 来源:发表于2017-11-20 14:13 被阅读0次

    请实现两个函数,分别用来序列化和反序列化二叉树

    语言java
    算法分析:

    我们可以采用先序遍历的思想,只是在这里需要改动。为了能够在重构二叉树时结点能够插入到正确的位置,在使用先序遍历保存二叉树到文件中的时候需要把NULL结点也保存起来(可以使用特殊符号如“#”来标识NULL结点)。
    假定二叉树如下所示:


    则使用先序遍历,保存到文件中的内容如下:

    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;
        }
    }
    

    相关文章

      网友评论

          本文标题:序列化二叉树

          本文链接:https://www.haomeiwen.com/subject/jrjvvxtx.html