Van egy oldalt http://geeksforgeeks.org/?p=6633 , hogy tárgyalja az épület egy fa az előjegyzés és rendű bejárási. Itt, mivel a fa egy keresési fát, akkor az in-order bejárás implicit (a sorrend a billentyűk). Használhatja a rekurzív algoritmus, mint az egyik, hogy a webhely, hogy kiszámolja a szintet az egyes csomópontja (anélkül, hogy építeni a fa), majd hozzáadjuk a szintek együtt, hogy a belső út hossza. Ez algoritmus lehet, hogy nem a leghatékonyabb, mivel ez nem keres a bejárás, hogy megtalálja a megfelelő gyermek az egyes csomópontok, de meg kell dolgozni. Ez a legjobb tippem, hogy hogyan kell csinálni egy egymenetes algoritmus (feltételezve, hogy minden gomb külön):
int internal_path_length(key_iter& cur_node, key_iter end, int level, key max_key) {
if (cur_node == end) return 0;
key cur_key = *cur_node;
if (cur_key > max_key) return 0;
++cur_node;
int len1 = internal_path_length(cur_node, end, level + 1, cur_key);
int len2 = internal_path_length(cur_node, end, level + 1, max_key);
return len1 + len2 + level;
}
Kezdeni valamivel:
key_iter i = preorder.begin();
internal_path_length(i, preorder.end(), 0, mk);
ahol mknagyobb a lehető legnagyobb kulcs a fán.