我正在尝试在我的结果之上构建一个搜索树。某种末端有 n 个叶子的 k-ary 树。我正在寻找 C++ 解决方案并进行试验,std::vector
但由于我需要内存一致性而无法完成。它可以通过嵌套向量来完成,但我不能这样做。
让我通过例子来解释细节:
未排序的结果可能是
Result R = { 4, 7, 8, 3, 1, 9, 0, 2, 2, 9, 6 }
最重要的是,我需要一棵树,其节点在我的特定问题中是质心。但为了简单起见,我将在这里使用人工值。
我将搜索树维度定义为
Height H = 2
Branch B = 3
最初的树
4 7 8 3 1 9 0 2 2 9 6
第二步
layer_0 1.6 5 8.2
| | |
+-+-+-+-+-+ +-+ +-+-+-+
| | | | | | | | | | | |
layer_1 3 1 0 2 2 3 4 6 7 8 9 9
最后一步
layer_0 1.6 5 8.2
| | |
+---+---+ +-+---+ +---+----+
layer_1 0.8 1.6 2.4 4.2 5 5.8 6.4 8.2 8.4
| | | | | | |
+-+ +-+-+ | | | | +-+
layer_2 1 0 2 2 3 4 6 7 8 9 9
这最后一棵树不是 k-ary 树,因为端叶大小为0 <= size <= |R|
.
目前我正在试验两个向量。
std::vector<size_t> layer_2;
std::vector<float> leafs;
std::size_t width, height;
在 的帮助下width
,height
可以浏览leafs
. 但我在质疑自己如何优雅地连接leafs
和layer_2
?
一个好的解决方案应该是什么样子的?