剑指offer 序列化二叉树

该博客介绍了一种将二叉树通过层序遍历转换为字符串的方法,并展示了如何利用相同策略逆向重构二叉树。通过实例展示了如何实现`TreeNode`类和`Solution`类中的序列化与反序列化操作。
import java.util.*;
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    int inf=0x7fffffff;
    String Serialize(TreeNode root) {
        if(root==null)return "";
        String ans="";
        LinkedList<TreeNode> queue=new LinkedList<TreeNode>();
        queue.push(root);
        while(!queue.isEmpty()){
           TreeNode temp= queue.removeFirst();
            if(temp.val!=inf){
                if(temp.left!=null){
                    queue.addLast(temp.left);
                }else{
                     queue.addLast(new TreeNode(inf));
                }
                if(temp.right!=null){
                    queue.addLast(temp.right);
                }else{
                     queue.addLast(new TreeNode(inf));
                }
                
                ans=ans+temp.val+',';
            }
            else{
                ans=ans+inf+',';
            }
            
            
            
            
        }
//         System.out.println(ans);
        return ans;
        
    }
    TreeNode Deserialize(String str) {
        if(str=="")return null;
        LinkedList<TreeNode> queue=new LinkedList<TreeNode>();
        int index=0;
        String[] list=str.split(",");
        TreeNode root=new TreeNode(  Integer.parseInt(list[index++]));
        queue.addLast(root);
        while(!queue.isEmpty()){
                  TreeNode temp= queue.removeFirst();
                    if(temp.val!=inf){
//                         queue.addLast(new TreeNode( Integer.parseInt(list[index++])));
                        TreeNode left=new TreeNode( Integer.parseInt(list[index++]));
                        TreeNode right=new TreeNode( Integer.parseInt(list[index++]));
                        temp.left=left;
                        temp.right=right;
                        if(left.val!=inf)
                            queue.addLast(left);
                        else
                            temp.left=null;
                        if(right.val!=inf)
                            queue.addLast(right);
                        else
                            temp.right=null;
                        
                    }
        }
        
       return root;
    }
}

思路为,先使用层序遍历把原本的二叉树转化为string,然后使用层序遍历把原本的string变为二叉树。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值