[LeetCode]Serialize and Deserialize Binary Tree
第三次写了,一遍过
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Codec { // Encodes a tree to a single string. public String serialize(TreeNode root) { StringBuffer result = new StringBuffer(""); if (root == null) { return ""; } Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); while (!queue.isEmpty()) { TreeNode node = queue.poll(); if (node == null) { result.append("N,"); } else { result.append(String.valueOf(node.val) + ","); queue.offer(node.left); queue.offer(node.right); } } return String.valueOf(result).substring(0, result.length() - 1); } // Decodes your encoded data to tree. public TreeNode deserialize(String data) { int length = data.length(); if (length == 0) { return null; } String[] strs = data.split(","); TreeNode result = new TreeNode(Integer.valueOf(strs[0])); Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(result); int index = 1; while (index < strs.length) { TreeNode node = queue.poll(); TreeNode left, right; if (strs[index].equals("N")) { left = null; } else { left = new TreeNode(Integer.valueOf(strs[index])); } index ++; if (strs[index].equals("N")) { right = null; } else { right = new TreeNode(Integer.valueOf(strs[index])); } index ++; node.left = left; node.right = right; if (left != null) { queue.offer(left); } if (right != null) { queue.offer(right); } } return result; } }

浙公网安备 33010602011771号