我有一个二叉树 Node
s 并想要遍历它。我看到的最常见的方法是 Stack
,或 LinkedList
。我还看到了其他不添加每个 Node
的方法到堆栈/列表,并且似乎几乎不占用内存(他们使用递归来探索每个元素)。
如果我做一个List<Node>
为了跟踪树中的每个节点,我会占用 2*n
内存量?或者,因为对象已经存在于树中,List是否只是一堆指向Node对象(存在于树中)的指针,因此不会占用两倍的内存?
测试用例:
Object objs[] = new Object[40];
/*
Initialize the 40 objects here
*/
List<Object> objTracker = new List<>();
for(int i=0; i<objs.length; i++) {
objTracker.add(objs[i]);
}
现在是否占用 2 倍的内存,或者执行所有 objTrackers
只需重定向/指向存储在 objs
中的对象?
最佳答案
只有在使用 new
时才创建新对象关键字(一般而言)。因为没有new
在objTracker.add(objs[i]);
,没有创建新对象。
关于java - 指向数组的 Java 堆栈会使用相同数量的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47257399/