【发布时间】:2013-04-17 07:08:10
【问题描述】:
我需要(对于 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 上以类似堆的结构组织它,但是乘以树仍然有点慢,因为我必须自己复制每个树级别,而不是一次复制整个树.
【问题讨论】:
-
@YochaiTimmer
std::map可能是一棵树。但即使特定实现使用树,它也不允许直接操作该树。
标签: c++ performance algorithm data-structures tree-structure