我正在学习二叉树。我正在练习一份试卷,并且遇到了这个问题,我不确定我的答案是否正确,所以我想问你们这些问题。 (不是作业!)
让我们说这个二叉树: -
1
/ \
2 3
/
4
\
5
给定数组中的索引[1] [?] [?] [?] [?] [?] [?] [?] [?]
将' 4'放置?
我的回答我认为是在第3个索引(如果我们认为数组基于0)但是,我认为这可能不是答案。它比在树的某些部分有很多NULLS的情况要复杂得多。
数组应该是这样的: - [1] [2] [3] [NULL] [NULL] [4] [NULL] [NULL] [5] 在哪里' 4'被置于第5指数?
答案 0 :(得分:0)
(注意:这很大程度上取决于二叉树的实现方式。)
对于您绘制的树并假设您在数组中隐式拥有树,即您将节点的子节点放在位置i
和2*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