/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ publicclassCodec {
// Encodes a tree to a single string. public String serialize(TreeNode root) { if (root == null) { return""; } StringBuildersb=newStringBuilder(); Stack<TreeNode> stack = newStack<>(); stack.push(root); while (!stack.isEmpty()) { TreeNodenode= stack.pop(); sb.append(node.val).append(','); if (node.left != null) { stack.push(node.left); } if (node.right != null) { stack.push(node.right); } } return sb.deleteCharAt(sb.length() - 1).toString(); }
// Decodes your encoded data to tree. public TreeNode deserialize(String data) { if (data.isEmpty()) { returnnull; } TreeNoderoot=null; for (String s : data.split(",")) { TreeNodenewNode=newTreeNode(Integer.valueOf(s)); if (root == null) { root = newNode; continue; } TreeNodenode= root; while (node != null) { if (newNode.val < node.val) { if (node.left == null) { node.left = newNode; break; } else { node = node.left; } } else { if (node.right == null) { node.right = newNode; break; } else { node = node.right; } } } } return root; } }
// Your Codec object will be instantiated and called as such: // Codec ser = new Codec(); // Codec deser = new Codec(); // String tree = ser.serialize(root); // TreeNode ans = deser.deserialize(tree); // return ans;