Serialize and Deserialize a binary tree

来源:互联网 发布:kindle看编程书籍 编辑:程序博客网 时间:2024/05/17 03:16

Serialize and Deserialize a binary tree


void Serialize(TreeNode node) {if (node == null) {    System.out.print("#" + " ");    return;}System.out.print(node.val + " ");Serialize(node.left);Serialize(node.right);}TreeNode Dederialize(char[] ch) {    if (ch == null || ch.length == 0)        return null;    return helper(ch, 0);}private TreeNode helper(char[] ch, int index) {if (index > ch.length || ch[index] == '#') return null;TreeNode node = new TreeNode(ch[index] - '0');index++;node.left = helper(ch, index);index++;node.right = helper(ch,index);return node;}



repost from link:https://gist.github.com/bittib/5620951
class TreeNode{    int val;    TreeNode left, right;    TreeNode(int val){        this.val = val;    }} public String serialize(TreeNode root){    StringBuilder sb = new StringBuilder();    serialize(root, sb);    return sb.toString();} private void serialize(TreeNode x, StringBuilder sb){    if (x == null) {        sb.append("# ");    } else {        sb.append(x.val + " ");        serialzie(x.left, sb);        serialzie(x.right, sb);    }} public TreeNode deserialize(String s){    if (s == null || s.length() == 0) return null;    StringTokenizer st = new StringTokenizer(s, " ");    return deserialize(st);} private TreeNode deserialize(StringTokenizer st){    if (!st.hasMoreTokens())        return null;    String val = st.nextToken();    if (val.equals("#"))        return null;    TreeNode root = new TreeNode(Integer.parseInt(val));    root.left = deserialize(st);    root.right = deserialize(st);    return root;}


0 0