Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Arrays 全二叉树的数据结构_Arrays_Algorithm_Data Structures_Binary Tree_Computer Science - Fatal编程技术网

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