Arrays 全二叉树的数据结构
我有这个问题,但我似乎不明白如何回答和解释: 使用数组表示完整的二叉树可能需要一个常数(可能是一个非常大的常数)的乘积与它以可接受的方式表示的乘积相差。Arrays 全二叉树的数据结构,arrays,algorithm,data-structures,binary-tree,computer-science,Arrays,Algorithm,Data Structures,Binary Tree,Computer Science,我有这个问题,但我似乎不明白如何回答和解释: 使用数组表示完整的二叉树可能需要一个常数(可能是一个非常大的常数)的乘积与它以可接受的方式表示的乘积相差。 对还是错?解释。我将解释我对这个问题的理解。假设我们有一棵大小为n的树T(其中n=2ˣ-1对于某些x>0,因为它是一棵完整的树),数组中表示T所需的空间应该正好是n 假设T是下面的树: 数组表示为[1,2,3,4,5,6,7],它正好占用n个插槽(在本例中为7个) 如果要以二叉树的正常格式表示T,则每个节点都应该是一个包含数据和两个子节点引用
对还是错?解释。我将解释我对这个问题的理解。假设我们有一棵大小为n的树T(其中n=2ˣ-1对于某些x>0,因为它是一棵完整的树),数组中表示T所需的空间应该正好是n 假设T是下面的树: 数组表示为[1,2,3,4,5,6,7],它正好占用n个插槽(在本例中为7个) 如果要以二叉树的正常格式表示T,则每个节点都应该是一个包含数据和两个子节点引用的结构:
______________
| data (1) |
|--------------|
| left | right |
‾/‾‾‾‾‾‾‾‾‾‾\‾
________/_____ _\____________
| data (2) | | data (3) |
|--------------| |--------------|
| left | right | | left | right |
‾/‾‾‾‾‾‾‾‾‾‾\‾ ‾/‾‾‾‾‾‾‾‾‾‾\‾
... ... ... ...
理论上,这应该占用3n个时隙(因为n节点中的每个节点都有3个时隙)
简而言之,两者都是O(n),但第一个占用n插槽,第二个占用3n