二叉树的数组放置

时间:2015-04-12 12:22:44

标签: tree binary-tree

我正在学习二叉树。我正在练习一份试卷,并且遇到了这个问题,我不确定我的答案是否正确,所以我想问你们这些问题。 (不是作业!)

让我们说这个二叉树: -

     1
    / \
   2   3
      / 
     4  
      \
       5

给定数组中的索引[1] [?] [?] [?] [?] [?] [?] [?] [?]

将' 4'放置?

我的回答我认为是在第3个索引(如果我们认为数组基于0)但是,我认为这可能不是答案。它比在树的某些部分有很多NULLS的情况要复杂得多。

数组应该是这样的: - [1] [2] [3] [NULL] [NULL] [4] [NULL] [NULL] [5] 在哪里' 4'被置于第5指数?

1 个答案:

答案 0 :(得分:0)

(注意:这很大程度上取决于二叉树的实现方式。)

对于您绘制的树并假设您在数组中隐式拥有树,即您将节点的子节点放在位置i2*i+1的数组中2*i+2的位置分别是:是的,然后4将在索引5处(从0开始计算)。

然而,假设以上所有内容并查看您的图片,您在阵列中的错误位置有5个。 5应该在索引12处。 你应该(用你的记号):

[1][2][3][NULL][NULL][4][NULL][NULL][NULL][NULL][NULL][NULL][5]

要看到这一点,请查看那里带有空条目的树

            1
        /       \
     2            3
   /   \       /     \
  N     N     4       N
 / \   / \   / \ 
N  N  N   N N   5