将序列化为磁盘计为辅助空间复杂度?

时间:2015-06-03 14:57:01

标签: space-complexity

我有一个简单的程序来序列化二叉树。代码:

public static <T> void serialize(TBST<T> tree, String fileName) throws FileNotFoundException, IOException {
        /*
         * using only 1 file will create a lot of confusion in coding.
         */
        try (ObjectOutputStream oosNodeData = new ObjectOutputStream(new FileOutputStream(fileName))) {
                preOrderSerialization(tree.getRoot(), oosNodeData);
        }
    }


    private static <T> void preOrderSerialization(TBSTNode<T> node, ObjectOutputStream oosNodeData) throws IOException {
        if (node == null) { 
            return;                                
        }

        oosNodeData.writeObject(node.element);

        preOrderSerialization(node.left, oosNodeData); 
        preOrderSerialization(node.right, oosNodeData);  
    }

正如我们所看到的,程序本身并没有使用额外的空间。然而它做了它告诉的 - 序列化。 什么是空间复杂性? O(n)还是O(1)? please ignore the stack space

1 个答案:

答案 0 :(得分:2)

这实际上是一个递归树遍历,因此它将是O(n)。请参阅以下内容以获得良好的概述:Big-Oh for Recursive Functions