• 297. 二叉树的序列化与反序列化


    public class Codec { // 这个数不只是个位数 还可能是负数等等 不单纯把他看作个位数 或者整数
    	// Encodes a tree to a single string.
    	public String serialize(TreeNode root) {
    		StringBuffer sbf = new StringBuffer("");
    		dfs1(root, sbf);
    		return sbf.toString();
    	}
    
    	public void dfs1(TreeNode root, StringBuffer sbf) {
    		if (root == null) {
    			sbf.append("#,");
    			return;
    		}
    		sbf.append(root.val + ",");
    		dfs1(root.left, sbf);
    		dfs1(root.right, sbf);
    	}
    
    	public TreeNode deserialize(String data) {
    
    		StringBuilder builder = new StringBuilder(data);
    		return deserial(builder);
    
    	}
    
    	private TreeNode deserial(StringBuilder data) {
    		int index = data.indexOf(",");			// index存储第一个逗号出现的索引值
    		String current = "";					// current存储当前要够构造的节点的val值
    		if (index == -1) {						// index为-1,说明不存在逗号,针对此对data作切割
    			index = data.length();
    			current = data.toString();
    			data = data.delete(0, index);
    		} else {								// index为-1,说明存在逗号,针对此对data作切割
    			current = data.substring(0, index);
    			data = data.delete(0, index + 1);
    		}
    
    		if (current.length() > 0 && !current.equals("#")) {		// 存在值,可以构建节点
    			TreeNode root = new TreeNode(Integer.parseInt(current));
    			root.left = deserial(data);
    			root.right = deserial(data);
    			return root;
    		} else {									// 不存在值,返回null
    			return null;
    		}
    
    	}
    }
    

    java与c++不同,java只存在值传递,不存在引用传递,不存在指针,所以,完全照搬c++用指针的方式(剑指offer第37题)来做是不行的,需要做变通。所以,在此我尝试用StringBuilder(不能直接用String,因为String是不可变对象,是被final修饰的,每次对String修改,都会创建一个新的String)来解决,也可以尝试用List,String[]数组等方式,不过需要考虑索引的问题。具体看代码注释

  • 相关阅读:
    从图片中提取html格式的布局
    javascript语法
    2015 9月2日 工作计划与执行
    2015 9月1日 工作计划与执行
    支付模块结构设计
    ubuntu下的pycharm4中文路径乱码
    2015 8月31 工作计划与执行
    25个git进阶技巧 2015-05-12 16:04 34人阅读 评论(0) 收藏
    Model/View框架总体架构 分类: QT学习实践 2015-05-11 22:05 34人阅读 评论(0) 收藏
    用Dom处理XML文件 分类: QT学习实践 2015-05-11 21:16 30人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/cznczai/p/11364367.html
Copyright © 2020-2023  润新知