
āĻāĻŽāĻžāĻā§ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻžāĻāĻāĻŋ āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ: āĻāĻŽāύ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āϏā§āĻā§āϰā§āĻ āĻāύā§āĻā§āĻāύāĻžāϰ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāϤ⧠āϝāĻž āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻžāĻā§āϞ⧠āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŦā§āĨ¤
- āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻ āĻāϰā§āύ
- āĻā§āϰāĻŽāĻŋāĻ āϏāĻāĻā§āϝāĻž āĻ āύā§āϏāĻžāϰ⧠āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āĻŽā§āĻā§ āĻĢā§āϞā§āύ
- āĻā§āϰāĻŽāĻŋāĻ āϏāĻāĻā§āϝāĻž āĻĻā§āĻŦāĻžāϰāĻž āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āĻĒāĻžāύ
- āĻĄā§āĻāĻž āϏāĻžāĻāĻžāύ⧠āĻāĻāĻžāϰ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ
āĻā§āϰāĻŽāĻžāĻāϤ āĻĄā§āĻāĻž āϝā§āĻ āĻ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāĻā§āĻā§, āĻāĻŦāĻ āĻāĻžāĻ āĻžāĻŽā§āĻāĻŋāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻĻā§āϰā§āϤ āĻāĻžāϰā§āϝāĻā§āϰāĻŽ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§, āĻāĻŽāĻŋ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻāύā§āĻā§āĻāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āĻāĻŋāϞāĻžāĻŽāĨ¤ āĻāϏāĻāĻŋāĻĄāĻŋāĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āĻŦā§āϝāϰā§āĻĨ āĻĒā§āϰāĻŽāĻžāĻŖāĻŋāϤ āĻšāϞā§, āĻāĻŦāĻ āĻāĻāĻž āϏā§āĻĒāώā§āĻ āĻšāϝāĻŧā§ āĻā§āϞ āϝ⧠āĻāĻŽāĻžāĻā§ āύāĻŋāĻā§āĻ āĻāĻŋāĻā§ āĻāĻāĻāĻž āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻāĻŽāĻžāϤā§āϰ āϝ⧠āϏāĻŽāĻžāϧāĻžāύāĻāĻŋ āĻŽāĻžāĻĨāĻžāϝāĻŧ āĻāϞ⧠āϤāĻž āĻšāϞ⧠āĻāĻāĻāĻŋ āĻŦāĻžāĻāύāĻžāϰāĻŋ āϏāĻžāϰā§āĻ āĻā§āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž, āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻĻā§āϰā§āϤ āĻĄā§āĻāĻž āϝā§āĻ āĻ āĻ āĻĒāϏāĻžāϰāĻŖ āĻāĻŦāĻ āĻĄā§āĻāĻžāĻā§ āϏāĻžāĻāĻžāύ⧠āĻā§āϰāĻŽā§ āϏāĻāϰāĻā§āώāĻŖā§āϰ āĻļāϰā§āϤāĻā§āϞ⧠āĻĒā§āϰāĻŖ āĻāϰā§āĨ¤ āĻŦāĻžāĻāĻŋ āĻāĻŋāϞ āĻļā§āϧ⧠āĻāĻāĻž āĻŦā§āϰ āĻāϰāĻž āϝā§, āĻā§āĻāĻžāĻŦā§ āϏāĻŽāϏā§āϤ āĻāĻĒāĻžāĻĻāĻžāύāĻā§ āϏā§āĻā§āĻŦāĻĻā§āϧ āĻāϰāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻā§āϰāĻŋ-āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšāϞā§āĻ āϏā§āĻāĻāĻā§āϞ⧠āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻŖāύāĻž āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
struct node_s {
data_t data;
uint64_t weight; // вĐĩŅ ŅСĐģа
node_t *left;
node_t *right;
node_t *parent;
};āĻāĻ āĻāϰā§āĻāĻŋāĻā§āϞ⧠āĻā§āĻĄā§āϰ āĻā§āϝāĻŧā§ āĻāĻŦāĻŋ āĻ āϤāϤā§āϤā§āĻŦ āĻŦā§āĻļāĻŋ āĻĨāĻžāĻāĻŦā§āĨ¤ āύāĻŋāĻā§āϰ āϞāĻŋāĻā§āĻā§ āĻā§āĻĄāĻāĻŋ āĻĻā§āĻāĻž āϝāĻžāĻŦā§āĨ¤
āĻāĻāύ
āĻāĻ āĻāĻĻā§āĻĻā§āĻļā§āϝ⧠āĻā§āϰāĻŋ-āĻāĻŋāĻā§ āϏāĻžāĻŽāĻžāύā§āϝ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ āĻāĻŦāĻ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϤāĻĨā§āϝ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻāĻāύ āĻāĻŋāĻāĻāĨ¤ āĻāĻŋāĻāĻāĻāĻŋāϰ āĻāĻāύ āĻšāϞ⧠āĻāĻ āύā§āĻĄā§āϰ āĻŦāĻāĻļāϧāϰāĻĻā§āϰ āϏāĻāĻā§āϝāĻž + 1 (āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύā§āϰ āĻāĻāύ)āĨ¤
āĻāĻāĻāĻŋ āύā§āĻĄā§āϰ āĻāĻāύ āĻŦā§āϰ āĻāϰāĻžāϰ āĻĢāĻžāĻāĻļāύ:
uint64_t bntree::get_child_weight(node_t *node) {
if (node) {
return node->weight;
}
return 0;
}āϤāĻĻāύā§āϏāĻžāϰ⧠āĻĒāĻžāϤāĻžāĻāĻŋāϰ āĻāĻāύ āϏāĻŽāĻžāύ 0.
āĻāϰāĻĒāϰā§, āĻāĻŽāϰāĻž āĻāĻ āϧāϰāύā§āϰ āĻāĻāĻāĻŋ āĻāĻžāĻā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āĻāĻžāĻā§āώā§āώ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύāĻž āĻĻā§āĻāĻŦāĨ¤ āĻāĻžāϞ⧠āϰāĻāĻāĻŋ āύā§āĻĄ āĻā§ (key) āĻĻā§āĻāĻžāĻŦā§ (āĻāϰ āĻŽāĻžāύ āĻĻā§āĻāĻžāύ⧠āĻšāĻŦā§ āύāĻž, āĻāĻžāϰāĻŖ āϏā§āĻāĻŋāϰ āĻā§āύ⧠āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ), āϞāĻžāϞ â āύā§āĻĄā§āϰ āĻāĻāύ, āϏāĻŦā§āĻ â āύā§āĻĄ āϏā§āĻāĻāĨ¤
āϝāĻāύ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āϰāĻŋ āĻāĻžāϞāĻŋ āĻĨāĻžāĻā§, āϤāĻāύ āĻāϰ āĻāϝāĻŧā§āĻ āĻšāϝāĻŧ ā§ĻāĨ¤ āĻāϞā§āύ āĻāϤ⧠āĻāĻāĻāĻŋ āϰā§āĻ āĻāϞāĻŋāĻŽā§āύā§āĻ āϝā§āĻ āĻāϰāĻŋ:

āĻā§āϰāĻŋ-āĻāĻŋāϰ āĻāϝāĻŧā§āĻ ā§§ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ, āϰā§āĻ āĻāϞāĻŋāĻŽā§āύā§āĻā§āϰ āĻāϝāĻŧā§āĻāĻ ā§§āĨ¤ āϰā§āĻ āĻāϞāĻŋāĻŽā§āύā§āĻā§āϰ āĻāϝāĻŧā§āĻāĻ āĻšāϞ⧠āĻā§āϰāĻŋ-āĻāĻŋāϰ āĻāϝāĻŧā§āĻāĨ¤
āĻāϞā§āύ āĻāϰāĻ āĻāϝāĻŧā§āĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻ āĻāϰāĻž āϝāĻžāĻ:




āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻā§āϤ āĻšāϞā§, āĻāĻŽāϰāĻž āύā§āĻĄāĻā§āϞā§āϰ āĻŽāϧā§āϝ āĻĻāĻŋāϝāĻŧā§ āύāĻŋāĻā§ āύāĻžāĻŽāĻŋ āĻāĻŦāĻ āĻ
āϤāĻŋāĻā§āϰāĻŽ āĻāϰāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ āύā§āĻĄā§āϰ āĻāύā§āϝ āĻāϝāĻŧā§āĻ āĻāĻžāĻāύā§āĻāĻžāϰāĻāĻŋ āĻŦāĻžāĻĄāĻŧāĻŋāϝāĻŧā§ āĻĻāĻŋāĻāĨ¤ āϝāĻāύ āĻāĻāĻāĻŋ āύāϤā§āύ āύā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ, āϤāĻāύ āϤāĻžāϰ āĻāϝāĻŧā§āĻ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰ⧠āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ 1āϝāĻĻāĻŋ āĻāĻ āϧāϰāύā§āϰ āĻā§-āϏāĻš āĻā§āύ⧠āύā§āĻĄ āĻāĻā§ āĻĨā§āĻā§āĻ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻŽāϰāĻž āĻŽāĻžāύāĻāĻŋ āĻāĻāĻžāϰāϰāĻžāĻāĻ āĻāϰ⧠āϰā§āĻā§ āĻĢāĻŋāϰ⧠āϝāĻžāĻ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āϰ āĻĒāĻžāϏ āĻāϰāĻž āϏāĻŽāϏā§āϤ āύā§āĻĄā§āϰ āĻāĻāύā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞ⧠āĻŦāĻžāϤāĻŋāϞ āĻāϰ⧠āĻĻāĻŋāĻāĨ¤
āϝāĻĻāĻŋ āĻā§āύ⧠āύā§āĻĄ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻāĻŽāϰāĻž āύāĻŋāĻā§ āĻāĻŋāϝāĻŧā§ āĻāĻŽāĻžāĻĻā§āϰ āĻĻā§āĻāϝāĻŧāĻž āύā§āĻĄāĻā§āϞā§āϰ āĻāϝāĻŧā§āĻ āĻāĻ āĻāĻŽāĻŋāϝāĻŧā§ āĻĻāĻŋāĻāĨ¤
āϏā§āĻāĻā§āϰ
āĻāĻŦāĻžāϰ āĻāϏāĻž āϝāĻžāĻ āĻāĻŋāĻāĻžāĻŦā§ āύā§āĻĄ āĻāύā§āĻĄā§āĻā§āϏ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤ āύā§āĻĄāĻā§āϞ⧠āϤāĻžāĻĻā§āϰ āĻāύā§āĻĄā§āĻā§āϏ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰ⧠āύāĻž; āĻāĻāĻŋ āύā§āĻĄā§āϰ āĻāϝāĻŧā§āĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āϤāĻžāϰāĻž āϤāĻžāĻĻā§āϰ āĻāύā§āĻĄā§āĻā§āϏ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ, āϤāĻžāĻšāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϤā§... āĻāĻĒāϰ) āĻā§āϰāĻŋ-āϤ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻĒāϰ āϏāĻŽāϏā§āϤ āύā§āĻĄā§āϰ āϏā§āĻāĻāĻā§āϞāĻŋ āĻāĻĒāĻĄā§āĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤
āĻāϞā§āύ āĻāĻŦāĻžāϰ āĻāĻāĻāĻŋ āĻāĻžāĻā§āώā§āώ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύāĻžāϝāĻŧ āϝāĻžāĻāϝāĻŧāĻž āϝāĻžāĻāĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āϰāĻŋ-āĻāĻŋ āĻāĻžāϞāĻŋ, āĻāϞā§āύ āĻāϤ⧠āĻĒā§āϰāĻĨāĻŽ āύā§āĻĄāĻāĻŋ āϝā§āĻ āĻāϰāĻŋ:

āĻĒā§āϰāĻĨāĻŽ āύā§āĻĄāĻāĻŋāϰ āĻāĻāĻāĻŋ āϏā§āĻāĻ āĻāĻā§ 0āĻāĻŦāĻ āĻāĻāύ āĻĻā§āĻāĻŋ āϏāĻŽā§āĻāĻžāĻŦā§āϝ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āϰāϝāĻŧā§āĻā§āĨ¤ āĻĒā§āϰāĻĨāĻŽāĻāĻŋāϤā§, āϰā§āĻ āĻāϞāĻŋāĻŽā§āύā§āĻā§āϰ āĻāύā§āĻĄā§āĻā§āϏ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāĻŦā§, āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāĻāĻŋāϤ⧠āĻšāĻŦā§ āύāĻžāĨ¤

āĻŽā§āϞā§, āĻŦāĻžāĻŽ āϏāĻžāĻŦāĻā§āϰāĻŋāĻāĻŋāϰ āĻāĻāύ ā§§āĨ¤
āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻāĻāύāĻž:

āϰā§āĻ āĻāύāĻĄā§āĻā§āϏ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧāύāĻŋ, āĻāĻžāϰāĻŖ āĻāϰ āĻŦāĻžāĻŽ āϏāĻžāĻŦāĻā§āϰāĻŋāϰ āĻāϝāĻŧā§āĻ ā§Ļ āϰāϝāĻŧā§āĻā§āĨ¤
āĻāĻāĻāĻŋ āύā§āĻĄā§āϰ āĻāύāĻĄā§āĻā§āϏ āĻā§āĻāĻžāĻŦā§ āĻāĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧ? āĻāĻāĻŋ āĻšāϞ⧠āϤāĻžāϰ āĻŦāĻžāĻŽ āϏāĻžāĻŦāĻā§āϰāĻŋāϰ āĻāϝāĻŧā§āĻ āĻāĻŦāĻ āϤāĻžāϰ āĻĒā§āϝāĻžāϰā§āύā§āĻ āĻĨā§āĻā§ āĻāϏāĻž āϏāĻāĻā§āϝāĻžāϰ āϝā§āĻāĻĢāϞāĨ¤ āĻāĻ āϏāĻāĻā§āϝāĻžāĻāĻŋ āĻā§? āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāύāĻĄā§āĻā§āϏ āĻāĻžāĻāύā§āĻāĻžāϰ, āĻāĻŦāĻ āĻāĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻāϰ āϏāĻŽāĻžāύāĨ¤ 0āĻāĻžāϰāĻŖ āϰā§āĻā§āϰ āĻā§āύ⧠āĻĒā§āϝāĻžāϰā§āύā§āĻ āύā§āĻāĨ¤ āĻāϰāĻĒāϰ, āϏāĻŦāĻāĻŋāĻā§ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻāĻŽāϰāĻž āĻŦāĻžāĻŽ āĻāĻžāĻāϞā§āĻĄā§ āϝāĻžāĻā§āĻāĻŋ āύāĻžāĻāĻŋ āĻĄāĻžāύ āĻāĻžāĻāϞā§āĻĄā§āĨ¤ āϝāĻĻāĻŋ āĻāĻŽāϰāĻž āĻŦāĻžāĻŽ āĻāĻžāĻāϞā§āĻĄā§ āϝāĻžāĻ, āϤāĻžāĻšāϞ⧠āĻāĻžāĻāύā§āĻāĻžāϰ⧠āĻāĻŋāĻā§āĻ āϝā§āĻ āĻšāϝāĻŧ āύāĻžāĨ¤ āĻāϰ āϝāĻĻāĻŋ āĻāĻŽāϰāĻž āĻĄāĻžāύ āĻāĻžāĻāϞā§āĻĄā§ āϝāĻžāĻ, āϤāĻžāĻšāϞ⧠āĻŦāϰā§āϤāĻŽāĻžāύ āύā§āĻĄā§āϰ āĻāύā§āĻĄā§āĻā§āϏāĻāĻŋ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤

āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, ā§Ž āĻā§-āϝā§āĻā§āϤ āĻāĻāĻāĻŋ āĻāϞāĻŋāĻŽā§āύā§āĻā§āϰ (āϰā§āĻā§āϰ āĻĄāĻžāύ āĻāĻžāĻāϞā§āĻĄ) āĻāύā§āĻĄā§āĻā§āϏ āĻā§āĻāĻžāĻŦā§ āĻāĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧ? āĻāĻāĻŋ āĻšāϞ⧠"āϰā§āĻ āĻāύā§āĻĄā§āĻā§āϏ" + "ā§Ž āĻā§-āϝā§āĻā§āϤ āύā§āĻĄā§āϰ āĻŦāĻžāĻŽ āϏāĻžāĻŦāĻā§āϰāĻŋāϰ āĻāϝāĻŧā§āĻ" + "ā§§" == ā§Š + ⧍ + ā§§ == 6
ā§Ŧ āĻā§-āϝā§āĻā§āϤ āĻāϞāĻŋāĻŽā§āύā§āĻā§āϰ āĻāύā§āĻĄā§āĻā§āϏ āĻšāĻŦā§ "āϰā§āĻ āĻāύā§āĻĄā§āĻā§āϏ" + 1 == 3 + 1 == 4
āϏā§āĻ āĻ āύā§āϝāĻžāϝāĻŧā§, āĻāύāĻĄā§āĻā§āϏ āĻĻā§āĻŦāĻžāϰāĻž āĻā§āύ⧠āĻāϞāĻŋāĻŽā§āύā§āĻ āĻĒā§āϤ⧠āĻāĻŦāĻ āĻŽā§āĻā§ āĻĢā§āϞāϤ⧠āϏāĻŽāϝāĻŧ āϞāĻžāĻā§āĨ¤ āĻ (āϞāĻ āĻāύ)āĻāĻžāϰāĻŖ āĻāĻžāĻā§āĻā§āώāĻŋāϤ āĻāϞāĻŋāĻŽā§āύā§āĻāĻāĻŋ āĻĒā§āϤ⧠āĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻĨāĻŽā§ āϏā§āĻāĻŋ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āĻšāĻŦā§ (āϰā§āĻ āĻĨā§āĻā§ āύāĻŋāĻā§āϰ āĻĻāĻŋāĻā§ āĻāĻ āĻāϞāĻŋāĻŽā§āύā§āĻāĻāĻŋāϤ⧠āϝā§āϤ⧠āĻšāĻŦā§)āĨ¤
āĻāĻā§āϰāϤāĻž
āĻāĻāύā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§, āĻāĻžāϰāϏāĻžāĻŽā§āϝ āϰāĻā§āώāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻžāĻā§āϰ āĻāĻā§āϰāϤāĻžāĻ āĻāĻŖāύāĻž āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻŦāϰā§āϤāĻŽāĻžāύ āύā§āĻĄā§āϰ āĻāĻāύāĻā§ āĻĒā§āϰāĻĻāϤā§āϤ āĻāĻāύā§āϰ āϏāĻŽāĻžāύ āĻŦāĻž āϤāĻžāϰ āĻā§āϝāĻŧā§ āĻŦāĻĄāĻŧ ⧍-āĻāϰ āĻĒā§āϰāĻĨāĻŽ āĻāĻžāϤ⧠āϰāĻžāĻāύā§āĻĄ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āϏā§āĻ āϏāĻāĻā§āϝāĻžāĻāĻŋāϰ āĻŦāĻžāĻāύāĻžāϰāĻŋ āϞāĻāĻžāϰāĻŋāĻĻāĻŽ āύāĻŋāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āϰāĻŋ-āĻāĻŋāϰ āĻāĻā§āϰāϤāĻž āĻĻā§āĻŦā§, āϝāĻĻāĻŋ āϧāϰ⧠āύā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ āϝ⧠āĻāĻāĻŋ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻĄāĨ¤ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻĒāĻžāĻĻāĻžāύ āϝā§āĻ āĻāϰāĻžāϰ āĻĒāϰ āĻā§āϰāĻŋ-āĻāĻŋ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻĄ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧāĨ¤ āĻāĻŽāĻŋ āĻā§āϰāĻŋ āĻā§āĻāĻžāĻŦā§ āĻŦā§āϝāĻžāϞā§āύā§āϏ āĻāϰāϤ⧠āĻšāϝāĻŧ āϤāĻžāϰ āϤāϤā§āϤā§āĻŦā§ āϝāĻžāĻŦ āύāĻžāĨ¤ āϏā§āϰā§āϏ āĻā§āĻĄā§ āĻāĻāĻāĻŋ āĻŦā§āϝāĻžāϞā§āύā§āϏāĻŋāĻ āĻĢāĻžāĻāĻļāύ āĻĻā§āĻāϝāĻŧāĻž āĻāĻā§āĨ¤
āĻāĻāύ āĻĨā§āĻā§ āĻāĻā§āϰāϤāĻžāϝāĻŧ āϰā§āĻĒāĻžāύā§āϤāϰā§āϰ āĻā§āĻĄāĨ¤
/*
* ĐОСвŅаŅаĐĩŅ ĐŋĐĩŅвОĐĩ ŅиŅĐģĐž в ŅŅĐĩĐŋĐĩĐŊи 2, ĐēĐžŅĐžŅĐžĐĩ йОĐģŅŅĐĩ иĐģи ŅОвĐŊĐž x
*/
uint64_t bntree::cpl2(uint64_t x) {
x = x - 1;
x = x | (x >> 1);
x = x | (x >> 2);
x = x | (x >> 4);
x = x | (x >> 8);
x = x | (x >> 16);
x = x | (x >> 32);
return x + 1;
}
/*
* ĐвОиŅĐŊŅĐš ĐģĐžĐŗĐ°ŅиŅĐŧ ĐžŅ ŅиŅĐģа
*/
long bntree::ilog2(long d) {
int result;
std::frexp(d, &result);
return result - 1;
}
/*
* ĐĐĩŅ Đē ĐŗĐģŅйиĐŊĐĩ
*/
uint64_t bntree::weight_to_depth(node_t *p) {
if (p == NULL) {
return 0;
}
if (p->weight == 1) {
return 1;
} else if (p->weight == 2) {
return 2;
}
return this->ilog2(this->cpl2(p->weight));
}āĻĢāϞāĻžāĻĢāϞ
- āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻĒāĻžāĻĻāĻžāύā§āϰ āϏāύā§āύāĻŋāĻŦā§āĻļ āĻāĻā§ āĻ (āϞāĻ āĻāύ)
- āĻāϰ āĻā§āϰāĻŽāĻŋāĻ āύāĻŽā§āĻŦāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻā§āύ⧠āĻāĻĒāĻžāĻĻāĻžāύ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāϝāĻŧ āĻ (āϞāĻ āĻāύ)
- āĻā§āύ⧠āĻāĻĒāĻžāĻĻāĻžāύā§āϰ āĻā§āϰāĻŽāĻŋāĻ āύāĻŽā§āĻŦāϰ āĻĻā§āĻŦāĻžāϰāĻž āϏā§āĻāĻŋ āĻĒā§āϰāĻžāĻĒā§āϤāĻŋ āĻāĻā§ āĻ (āϞāĻ āĻāύ)
āĻāϤāĻŋ āĻ (āϞāĻ āĻāύ) āϏāĻŽāϏā§āϤ āĻĄā§āĻāĻž āϏā§āĻŦāĻŋāύā§āϝāϏā§āϤ āĻāĻāĻžāϰ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽāϰāĻž āĻ āϰā§āĻĨ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻŋāĨ¤
āĻāĻ āϧāϰāύā§āϰ āĻāĻžāĻ āĻžāĻŽā§ āĻā§āĻĨāĻžāϝāĻŧ āĻāĻžāĻā§ āϞāĻžāĻāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āĻāĻŽāĻŋ āĻāĻžāύāĻŋ āύāĻžāĨ¤ āĻāĻāĻž āĻā§āĻŦāϞ āĻāĻžāĻāĻĒāĻžāϞāĻž āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āϤāĻž āĻāϰāĻ āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻŦā§āĻāĻžāϰ āĻāĻāĻāĻŋ āĻĒā§āϰāĻā§āώā§āĻāĻžāĨ¤ āĻāĻĒāύāĻžāϰ āĻŽāύā§āϝā§āĻā§āϰ āĻāύā§āϝ āϧāύā§āϝāĻŦāĻžāĻĻāĨ¤
āϰā§āĻĢāĻžāϰā§āύā§āϏ
āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋāϤ⧠āĻāϤāĻŋ āĻĒāϰā§āĻā§āώāĻžāϰ āĻāύā§āϝ āĻā§āϏā§āĻ āĻĄā§āĻāĻž āϰāϝāĻŧā§āĻā§āĨ¤ āĻā§āϰāĻŋ-āĻāĻŋ āĻĒā§āϰāĻŖ āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤ 1000000 āĻāĻĒāĻžāĻĻāĻžāύāϏāĻŽā§āĻšāĨ¤ āĻāĻŦāĻ āĻĒāϰā§āϝāĻžāϝāĻŧāĻā§āϰāĻŽā§ āĻāĻĒāĻžāĻĻāĻžāύāϏāĻŽā§āĻšā§āϰ āĻ āĻĒāϏāĻžāϰāĻŖ, āϏāĻāϝā§āĻāύ āĻ āĻĒā§āύāϰā§āĻĻā§āϧāĻžāϰ āĻāĻā§āĨ¤ 1000000 āĻŦāĻžāϰāĨ¤ āĻ āϰā§āĻĨāĻžā§ 3000000 āĻ āĻĒāĻžāϰā§āĻļāύāĻā§āϞā§āĨ¤ āĻĢāϞāĻžāĻĢāϞ āĻŦā§āĻļ āĻāĻžāϞ⧠āĻāĻŋāϞ: āĻĒā§āϰāĻžāϝāĻŧ ā§Ž āϏā§āĻā§āύā§āĻĄāĨ¤
āĻāϤā§āϏ: www.habr.com
