我正在写一个简单的编解码器。该树将被预先计算,一旦构建就不会发生任何变化。它只会被搜索。
平衡二叉树的所有叶节点都是信号值,内部节点是近似压缩表示。
如果我有很大的叶节点值,使用 stl 矢量的列表实现是否可扩展?
目前我不知道有多大。
列出实现,例如1,2,3,4,5,6,7
如果我有 4 个叶节点
那么孩子们
root(1)-> 2,3
2->4,5
3->6,7
所以我可以简单地使用孩子们在向量中的位置跳到他们身上。
在这种情况下,使用“列表”或“数组”不会造成任何问题(因为树是不可变的)。 O(log n) 搜索的唯一要求是快速随机访问(即对给定索引的 O(1) 访问)。
您可以使用vector
or a deque
,两者都合适。您可能会遇到可扩展性问题vector
如果系统找不到足够大的内存块来容纳所有元素,尽管开始应该更简单。如果您遇到此障碍,请切换到deque
,虽然你可能会失去一些速度,但由于其碎片化的性质,它应该可以让你进一步成长。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)