Ad esempio, ho il seguente modello b-tree con ogni nodo contenente coppie tag/valore. L'albero indica la precedenza (o priorità), con la radice più alta, più bassa delle foglie (ma questa è un'applicazione specifica). Voglio unire una nuova sezione ad albero nel genitore, con la nuova sezione contenente coppie di valori/tag potenzialmente comuni fino al nodo appena sopra un nodo foglia (una nuova sezione ad albero completamente duplicata non verrebbe semplicemente unificata). Per esempio.C++ b-tree merge
esistenti albero (tag, valore) coppie indicate:
A,0
,----------,-------------,
B,1 B,2 B,3
,-------------,
C,1 C,2
nuovo albero per unire:
A,0
|
B,3
,-----------,
C,1 C,2
finale albero di fusione:
A,0
,----------,-----------------,
B,1 B,2 B,3
,-------------, ,-----------,
C,1 C,2 C,1 C,2
Domanda: c'è un elegante La soluzione C++ a questa fusione di alberi b usando i contenitori std, o possibile con una libreria come boost? Grazie.
Il modo più sicuro per farlo è tramite l'inserimento manuale di tutti gli elementi del secondo b-tree all'interno del primo. In alternativa, dare un'occhiata a www.ccs.neu.edu/home/bradrui/index_files/parareorg.pdf. – izogfif
C'è un (in fase di sviluppo) boost.btree, non sono sicuro se sarà d'aiuto, ma eccolo qui: https://github.com/Beman/Boost-Btree –
Si potrebbe anche voler controllare questa implementazione di un b- tree: http://touc.org/btree.html – nevero