我被要求在二叉树中提供此size
的{{1}}。
这是一个简单的Node
类。
Node
鉴于class Node {
Integer data;
Node left, right;
}
Node integerNode = new Node(1000);
integerNode.left=someIntegerNode1;
integerNode.right=someIntegerNode2;
有一些Node
,data
和left
引用都不是right
。您如何计算null
的{{1}}?
此问题随后扩展到包含size
数据的integerNode
类,如下所示:
Node
假设节点已完全填满,Person
对象可能是非常重的对象。
class Node {
Person data;
Node left, right;
}
Node personNode = new Node(someHeavyPersonObject);
personNode.left=somePersonNode1;
personNode.right=somePersonNode2;
和Person
都有不同的尺寸或相同吗?
这些 我能想到的两种方式 :
integerNode
对象。因此它总是占用相当于三个引用的大小(personNode
和data
)。我已经查看了这个问题In Java, what is the best way to determine the size of an object?,但似乎无关,因为我正在寻找计算大小(非实际大小)的逻辑,而不使用data, left
之类的任何库。
提前致谢!!!
答案 0 :(得分:1)
这是一个典型的面试问题,试图确定您是否完全理解Java如何使用引用和对象。
一个好的答案可能是:
树节点本身只会占用与它所拥有的引用一样多的空间,在这种情况下,空间仅占用 3 引用。这允许Java对象同时驻留在不同的结构中,而不占用更多空间。