【发布时间】:2014-05-20 00:57:19
【问题描述】:
示例:
我有以下示例,说明冠军赛时间表:
1 2 3 4 5 6 7 8
| | | |
9 10 11 12
| |
13 14
|
15
规则:
数字代表节点的值(匹配)。值从上到下开始,因为根是冠军的最后一场比赛。
树将始终保持平衡,并且可以有 N 个顶部位置,其中 N = {2,4,8,16,32,64,128,256...}
问题:
我需要找到一个数学函数,它会返回节点父节点的值,并传递它的值。而且这个数学函数必须可以用 C# 来表示。
GetNodeParent(9); // must return 13
GetNodeParent(10); // must return 13
GetNodeParent(4); // must return 10
GetNodeParent(15); // must return null
功能应该如何?
【问题讨论】:
-
GetNodeParent(Int32 nodeIndex)方法没有足够的信息来完成任务。除了节点数之外,它还需要知道节点总数或级别数(实际上是等价的)。 -
你传递的是索引还是值?因为如果你只传递值,你也需要传递整个数组。如果您正在传递值(根据您的示例,我认为您是这样),那么您在那里所做的命名非常糟糕。
-
我需要通过索引。我的索引不是从0开始的,根是最后一个索引。
-
哦,我明白了,那是因为你的树是自上而下的。通常你从索引 0 的根目录开始,我的错。
-
用最小公倍数计算树中有多少层!
标签: c# math logic nodes treenode