美文网首页
序列化与反序列化二叉树

序列化与反序列化二叉树

作者: 名字是乱打的 | 来源:发表于2022-03-31 21:11 被阅读0次

    思路:

    回溯

    代码:

    
        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) {
            if (str==null){
                return null;
            }
            String[] nodes=str.split("!");
            Queue<String> queue= new LinkedList<>();
            for (String node : nodes) {
                queue.offer(node);
            }
            return reBuildTree(queue);
        }
    
        private TreeNode reBuildTree(Queue<String> queue) {
            String poll = queue.poll();
            if ("#".equals(poll)){
                return null;
            }
            TreeNode currNode=new TreeNode(Integer.parseInt(poll));
            currNode.left=reBuildTree(queue);
            currNode.right=reBuildTree(queue);
            return currNode;
        }
    

    相关文章

      网友评论

          本文标题:序列化与反序列化二叉树

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