How to Serialize Binary Tree

后端 未结 10 898
野的像风
野的像风 2020-12-23 21:09

I went to an interview today where I was asked to serialize a binary tree. I implemented an array-based approach where the children of node i (numbering in level-order trave

10条回答
  •  既然无缘
    2020-12-23 21:49

    Using pre order traversal, serialize Binary tree. Use the same pre order traversal to deserialize tree. Be careful about the edge cases. Here null nodes are represented by "#"

    public static String serialize(TreeNode root){
                StringBuilder sb = new StringBuilder();
                serialize(root, sb);
                return sb.toString();
            }
    
        private static void serialize(TreeNode node, StringBuilder sb){
            if (node == null) {
                sb.append("# ");
            } else {
                sb.append(node.val + " ");
                serialize(node.left, sb);
                serialize(node.right, sb);
            }
        }
    
        public static TreeNode deserialize(String s){
            if (s == null || s.length() == 0) return null;
            StringTokenizer st = new StringTokenizer(s, " ");
            return deserialize(st);
        }
    
        private static 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;
        } 
    

提交回复
热议问题