Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
空间复杂性-使用现有对象的Java对象数组_Java_Arrays_Binary Search Tree - Fatal编程技术网

空间复杂性-使用现有对象的Java对象数组

空间复杂性-使用现有对象的Java对象数组,java,arrays,binary-search-tree,Java,Arrays,Binary Search Tree,假设我正在使用Java,假设我正在尝试确定给定的二叉树是否是BST 我选择通过创建一个空数组(保存节点对象)、按顺序遍历树(沿途将节点添加到数组中)来解决问题,然后如果数组是一个完全排序的数组,则说“True” 这种方法的空间复杂度是O(1)还是O(n) 当我创建这个新数组来保存我在遍历时在树中遇到的节点对象时,我是否放入了实际的对象(因为我没有初始化任何新对象,所以应该是O(1)) 还是像存储在数组中的树节点的副本?(因此,O(n)空间。) 请随时纠正我所做的任何错误假设。如果您使用的是另一个

假设我正在使用Java,假设我正在尝试确定给定的二叉树是否是BST

我选择通过创建一个空数组(保存节点对象)、按顺序遍历树(沿途将节点添加到数组中)来解决问题,然后如果数组是一个完全排序的数组,则说“True”

这种方法的空间复杂度是O(1)还是O(n)

当我创建这个新数组来保存我在遍历时在树中遇到的节点对象时,我是否放入了实际的对象(因为我没有初始化任何新对象,所以应该是O(1))

还是像存储在数组中的树节点的副本?(因此,O(n)空间。)


请随时纠正我所做的任何错误假设。

如果您使用的是另一个大小为
n
的数组,则您的空间要求至少为
O(n)
,而不管您是否仅将对象的引用或副本存储到新数组中


另外,如果对遍历使用递归,那么对堆栈使用的是
O(logn)

这种方法是O(n),不管是复制整个对象还是指向它们的指针,因为您创建了一个大小为n的数组来复制。不过,实际上,您只复制指针(实际上是Java中唯一的选项),因此不会复制节点本身占用的空间。

如果用其他语言实现,这会有什么不同吗?或者不管它是用什么语言实现的,都是O(n)?如果您使用附加数组,那么它在任何语言中都将是
O(n)