我需要(对于 g++)一个(计算时间)优化的算法树结构来复制/乘一棵树。
我的树将是一棵 k-ary 树,但不一定是填充的。主要操作是将现有树相乘(最多 k 次)并将树作为子树添加到新节点。然后叶节点级别将被擦除以保持固定级别规则。
有人知道提供此功能的数据结构吗?
乘法的一个例子:假设我们有一个二叉树
A
|
/ \
/ \
B C
| / \
| / \
D E F
我们想添加一个新节点/乘以
R
/ \
/ \
.. ..
所以结果看起来像
R
/ \
/ \
/ \
/ \
/ \
A A
| |
/ \ / \
/ \ / \
B C B C
| / \ | / \
| / \ | / \
D E F D E F
我试图将它组织在一个类似于堆的结构中的 std::vector 上,但是乘以树仍然有点慢,因为我必须自己复制每个树级别,而不是一次复制整个树。