java中二叉树节点的大小

时间:2018-06-14 06:49:54

标签: java algorithm data-structures size binary-tree

我被要求在二叉树中提供此size的{​​{1}}。

这是一个简单的Node类。

Node

鉴于class Node { Integer data; Node left, right; } Node integerNode = new Node(1000); integerNode.left=someIntegerNode1; integerNode.right=someIntegerNode2; 有一些Nodedataleft引用都不是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都有不同的尺寸或相同吗?

这些 我能想到的两种方式

  1. 节点的大小并不重要,因为它只包含引用,而不包含实际的integerNode对象。因此它总是占用相当于三个引用的大小(personNodedata)。
  2. 节点的大小取决于它所拥有的数据对象。
  3. 我已经查看了这个问题In Java, what is the best way to determine the size of an object?,但似乎无关,因为我正在寻找计算大小(非实际大小)的逻辑,而不使用data, left之类的任何库。

    提前致谢!!!

1 个答案:

答案 0 :(得分:1)

这是一个典型的面试问题,试图确定您是否完全理解Java如何使用引用和对象。

一个好的答案可能是:

  

树节点本身只会占用与它所拥有的引用一样多的空间,在这种情况下,空间仅占用 3 引用。这允许Java对象同时驻留在不同的结构中,而不占用更多空间。