เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดถเตเดจเด เดเดพเตป เดจเตเดฐเดฟเดเตเดเต. เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดจเตฝเดเตเดจเตเดจ เดเดฐเต เดกเดพเดฑเตเดฑ เดธเตเดฑเตเดฑเตเดฑเตเดเต เดเดฃเตเดเตเดฏเตเดจเตผ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดฃเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต:
- เดชเตเดคเดฟเดฏ เดเดเดเด เดเตเตผเดเตเดเตเด
- เดธเตเดฐเดฟเดฏเตฝ เดจเดฎเตเดชเตผ เดชเตเดฐเดเดพเดฐเด เดเดเดเด เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเด
- เดเตผเดกเดฟเดจเตฝ เดจเดฎเตเดชเตผ เดชเตเดฐเดเดพเดฐเด เดเดเดเด เดจเตเดเตเด
- เดกเดพเดฑเตเดฑ เด เดเตเดเตเดเดฟเดฏ เดฐเตเดชเดคเตเดคเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
เดกเดพเดฑเตเดฑ เดจเดฟเดฐเดจเตเดคเดฐเด เดเตเตผเดเตเดเตเดเดฏเตเด เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดเดจ เดตเตเดเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจ เดตเตเดเดค เดเดฑเดชเตเดชเดพเดเตเดเดฃเด. เดเดฆเตเดฏเด เดเดพเตป เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดเดฃเตเดเตเดฏเตเดจเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เด เดคเตเดคเดฐเดฎเตเดฐเต เดเดพเดฐเตเดฏเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเต เดเตเดฒเดพเดธเต. เด เดชเดพเดค เดตเดฟเดเดฏเดฟเดเตเดเดฟเดฒเตเดฒ, เดเดจเดฟเดเตเดเต เดธเตเดตเดฏเด เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฃเด เดเดจเตเดจ เดงเดพเดฐเดฃ เดตเดจเตเดจเต. เดเดฐเต เดฌเตเดจเดฑเดฟ เดธเตเตผเดเตเดเต เดเตเดฐเต เดเดชเดฏเตเดเดฟเดเตเดเตเด เดเดจเตเดจเดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดฎเดจเดธเตเดธเดฟเตฝ เดตเดจเตเดจเดคเต. เดเดพเดฐเดฃเด, เดตเตเดเดคเตเดคเดฟเตฝ เดเตเตผเดเตเดเตฝ, เดเดฒเตเดฒเดพเดคเดพเดเตเดเตฝ, เด เดเตเดเตเดเดฟเดฏ เดฐเตเดชเดคเตเดคเดฟเตฝ เดกเดพเดฑเตเดฑ เดธเดเดญเดฐเดฃเด เดเดจเตเดจเดฟเดตเดฏเตเดเต เดเดตเดถเตเดฏเดเดค เดเดคเต เดจเดฟเดฑเดตเตเดฑเตเดฑเตเดจเตเดจเต. เดเดฒเตเดฒเดพ เดเดเดเดเตเดเดณเตเด เดเดเตเดเดจเต เดธเตเดเดฟเดเดฏเดฟเดฒเดพเดเตเดเดพเดฎเตเดจเตเดจเตเด เดฎเดฐเด เดฎเดพเดฑเตเดฎเตเดชเตเตพ เดธเตเดเดฟเดเดเตพ เดตเตเดฃเตเดเตเด เดเดฃเดเตเดเดพเดเตเดเดพเดฎเตเดจเตเดจเตเด เดเดฃเตเดเตเดคเตเดคเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต.
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.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เด เดคเตเดคเดฐเดฎเตเดฐเต เดตเตเดเตเดทเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดทเตเดตเตฝ เดชเตเดฐเดพเดคเดฟเดจเดฟเดงเตเดฏเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด. เดเดฑเตเดชเตเดชเต เดจเตเดกเต เดเต เดจเดฟเดฑเดคเตเดคเดฟเตฝ เดเดพเดฃเดฟเดเตเดเตเด (เดฎเตเดฒเตเดฏเด เดเดพเดฃเดฟเดเตเดเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเดคเต เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ), เดเตเดตเดชเตเดชเต - เดเตเดเตเดเต เดญเดพเดฐเด, เดชเดเตเด - เดจเตเดกเต เดธเตเดเดฟเด.
เดจเดฎเตเดฎเตเดเต เดฎเดฐเด เดถเตเดจเตเดฏเดฎเดพเดเตเดฎเตเดชเตเตพ, เด เดคเดฟเดจเตเดฑเต เดญเดพเดฐเด 0 เดเดฃเต. เด เดคเดฟเดฒเตเดเตเดเต เดเดฐเต เดฑเตเดเตเดเต เดเดเดเด เดเตเตผเดเตเดเดพเด:
เดฎเดฐเดคเตเดคเดฟเดจเตเดฑเต เดญเดพเดฐเด 1 เดเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต, เดฑเตเดเตเดเต เดฎเตเดฒเดเดคเตเดคเดฟเดจเตเดฑเต เดญเดพเดฐเด 1 เดเดฏเดฟ เดฎเดพเดฑเตเดจเตเดจเต.
เดจเดฎเตเดเตเดเต เดเตเดฑเดเตเดเต เดเดเดเดเตเดเตพ เดเตเดเดฟ เดเตเตผเดเตเดเดพเด:
เดเดฐเต เดคเดตเดฃเดฏเตเด เดเดฐเต เดชเตเดคเดฟเดฏ เดเดเดเด เดเตเตผเดเตเดเตเดฎเตเดชเตเตพ, เดเดเตเดเตพ เดจเตเดกเตเดเตพ เดคเดพเดดเตเดเตเดเต เดชเตเดฏเดฟ เดเดฐเต เดจเตเดกเดฟเดจเตเดฑเตเดฏเตเด เดญเดพเดฐเด เดเตเดฃเตเดเตผ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเด. เดเดฐเต เดชเตเดคเดฟเดฏ เดจเตเดกเต เดธเตเดทเตเดเดฟเดเตเดเตเดฎเตเดชเตเตพ, เด
เดคเดฟเดจเต เดเดฐเต เดญเดพเดฐเด เดจเตฝเดเดชเตเดชเตเดเตเดจเตเดจเต 1. เด
เดคเตเดคเดฐเดฎเตเดฐเต เดเต เดเดณเตเดณ เดเดฐเต เดจเตเดกเต เดเดคเดฟเดจเดเด เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดเดเตเดเตพ เดฎเตเดฒเตเดฏเด เดคเดฟเดฐเตเดคเตเดคเดฟเดฏเตเดดเตเดคเตเดเดฏเตเด เดฑเตเดเตเดเดฟเดฒเตเดเตเดเต เดคเดฟเดฐเดฟเดเต เดชเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด, เดเดเตเดเตพ เดเดเดจเตเดจเตเดชเตเดฏ เดเดฒเตเดฒเดพ เดจเตเดกเตเดเดณเตเดเตเดฏเตเด เดญเดพเดฐเดคเตเดคเดฟเดฒเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดฑเดฆเตเดฆเดพเดเตเดเตเด.
เดเดฐเต เดจเตเดกเต เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดเตเดเตพ เดคเดพเดดเตเดเตเดเต เดชเตเดฏเดฟ เดชเดพเดธเดพเดฏ เดจเตเดกเตเดเดณเตเดเต เดญเดพเดฐเด เดเตเดฑเดฏเตเดเตเดเตเดจเตเดจเต.
เดธเตเดเดฟเดเดเตพ
เดเดจเดฟ เดจเดฎเตเดเตเดเต เดเดเตเดเดจเต เดธเตเดเดฟเด เดจเตเดกเตเดเตพ เดเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด. เดจเตเดกเตเดเตพ เด
เดตเดฏเตเดเต เดธเตเดเดฟเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดจเตเดกเตเดเดณเตเดเต เดญเดพเดฐเด เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเดพเดฃเต เดเดคเต เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเดคเต. เด
เดตเตผ เด
เดตเดฐเตเดเต เดธเตเดเดฟเด เดธเดเดญเดฐเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ, เด
เดคเต เดเดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเด O (n) เดเตเดฐเตเดฏเดฟเดฒเต เดเดฐเต เดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเตเด เดถเตเดทเด เดเดฒเตเดฒเดพ เดจเตเดกเตเดเดณเตเดเตเดฏเตเด เดธเตเดเดฟเดเดเตพ เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดจเตเดณเตเดณ เดธเดฎเดฏเด.
เดจเดฎเตเดเตเดเต เดเดฐเต เดตเดฟเดทเตเดตเตฝ เดชเตเดฐเดพเดคเดฟเดจเดฟเดงเตเดฏเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด. เดเดเตเดเดณเตเดเต เดฎเดฐเด เดถเตเดจเตเดฏเดฎเดพเดฃเต, เด
เดคเดฟเดฒเตเดเตเดเต เดเดฆเตเดฏ เดจเตเดกเต เดเตเตผเดเตเดเดพเด:
เดเดฆเตเดฏ เดจเตเดกเดฟเดจเต เดเดฐเต เดธเตเดเดฟเดเดฏเตเดฃเตเดเต 0, เดเดชเตเดชเตเตพ 2 เดเตเดธเตเดเตพ เดธเดพเดงเตเดฏเดฎเดพเดฃเต. เดเดฆเตเดฏเดคเตเดคเตเดคเดฟเตฝ, เดฑเตเดเตเดเต เดฎเตเดฒเดเดคเตเดคเดฟเดจเตเดฑเต เดธเตเดเดฟเด เดฎเดพเดฑเตเด, เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเดฟเตฝ เด เดคเต เดฎเดพเดฑเดฟเดฒเตเดฒ.
เดฑเตเดเตเดเดฟเตฝ, เดเดเดคเต เดเดชเดตเตเดเตเดทเดคเตเดคเดฟเดจเต 1 เดญเดพเดฐเดฎเตเดฃเตเดเต.
เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดเตเดธเต:
เดฑเตเดเตเดเดฟเดจเตเดฑเต เดธเตเดเดฟเด เดฎเดพเดฑเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เด เดคเดฟเดจเตเดฑเต เดเดเดคเต เดธเดฌเตเดเตเดฐเตเดฏเตเดเต เดญเดพเดฐเด 0 เดเดฏเดฟ เดคเตเดเดฐเตเดจเตเดจเต.
เดเดฐเต เดจเตเดกเดฟเดจเตเดฑเต เดธเตเดเดฟเด เด เดคเดฟเดจเตเดฑเต เดเดเดคเต เดธเดฌเตเดเตเดฐเตเดฏเตเดเต เดญเดพเดฐเด + เดฐเดเตเดทเดฟเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดเตเดฎเดพเดฑเดฟเดฏ เดธเดเดเตเดฏเดฏเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเต. เด เดจเดฎเตเดชเตผ เดเดจเตเดคเดพเดฃเต?, เดเดคเดพเดฃเต เดธเตเดเดฟเด เดเตเดฃเตเดเตผ, เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเดคเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต 0, เดเดพเดฐเดฃเด เดฑเตเดเตเดเดฟเดจเต เดฎเดพเดคเดพเดชเดฟเดคเดพเดเตเดเดณเดฟเดฒเตเดฒ. เด เดชเตเดชเตเตพ เดเดฒเตเดฒเดพเด เดจเดฎเตเดฎเตพ เดเดเดคเต เดเตเดเตเดเดฟเดฏเดฟเดฒเตเดเตเดเต เดตเดฒเดคเตเดคเตเดฏเดฟเดฒเตเดเตเดเต เดเดตเดฟเดเต เดชเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดเดคเตเดตเดถเดคเตเดคเดพเดฃเตเดเตเดเดฟเตฝ, เดเตเดฃเตเดเดฑเดฟเดฒเตเดเตเดเต เดเดจเตเดจเตเด เดเตเตผเดเตเดเดฟเดฒเตเดฒ. เดจเดฎเตเดฎเตพ เดจเดฟเดฒเดตเดฟเดฒเต เดจเตเดกเดฟเดจเตเดฑเต เดธเตเดเดฟเด เดตเดฒเดคเต เดเดจเตเดจเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ.
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเต 8 (เดฑเตเดเตเดเดฟเดจเตเดฑเต เดถเดฐเดฟเดฏเดพเดฏ เดเตเดเตเดเดฟ) เดเดณเตเดณ เดเดฐเต เดฎเตเดฒเดเดคเตเดคเดฟเดจเตเดฑเต เดธเตเดเดฟเด เดเดเตเดเดจเต เดเดฃเดเตเดเดพเดเตเดเตเดจเตเดจเต. เดเดคเดพเดฃเต "เดฑเตเดเตเดเต เดธเตเดเดฟเด" + "เดเต 8 เดเดณเตเดณ เดจเตเดกเดฟเดจเตเดฑเต เดเดเดคเต เดธเดฌเตเดเตเดฐเตเดฏเตเดเต เดญเดพเดฐเด" + "1" == 3 + 2 + 1 == 6
เดเต 6 เดเดณเตเดณ เดฎเตเดฒเดเดคเตเดคเดฟเดจเตเดฑเต เดธเตเดเดฟเด "เดฑเตเดเตเดเต เดธเตเดเดฟเด" + 1 == 3 + 1 == เดเดฏเดฟเดฐเดฟเดเตเดเตเด 4
เด เดคเดจเตเดธเดฐเดฟเดเตเดเต, เดธเตเดเดฟเด เดชเตเดฐเดเดพเดฐเด เดเดฐเต เดเดเดเด เดฒเดญเดฟเดเตเดเดพเดจเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเดพเดจเตเด เดธเดฎเดฏเดฎเตเดเตเดเตเดเตเด O (เดฒเตเดเต n), เดเดพเดฐเดฃเด เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดฎเตเดฒเดเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฎเตเดฎเตพ เดเดฆเตเดฏเด เด เดคเต เดเดฃเตเดเตเดคเตเดคเดฃเด (เดฑเตเดเตเดเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดฎเตเดฒเดเดคเตเดคเดฟเดฒเตเดเตเดเต เดเดฑเดเตเดเตเด).
เดเดดเด
เดญเดพเดฐเดคเตเดคเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ, เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฐเดคเตเดคเดฟเดจเตเดฑเต เดเดดเดตเตเด เดเดฃเดเตเดเดพเดเตเดเดพเด. เดฌเดพเดฒเตปเดธเดฟเดเดเดฟเดจเต เด
เดคเตเดฏเดพเดตเดถเตเดฏเดฎเดพเดฃเต.
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดฒเดตเดฟเดฒเต เดจเตเดกเดฟเดจเตเดฑเต เดญเดพเดฐเด, เดคเดจเตเดจเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดญเดพเดฐเดคเตเดคเตเดเตเดเดพเตพ เดตเดฒเตเดคเต เดคเตเดฒเตเดฏเดฎเต เดเดฏ 2 เดจเตเดฑเต เดถเดเตเดคเดฟเดฏเดฟเดฒเตเดเตเดเต เดเดฆเตเดฏ เดธเดเดเตเดฏเดฏเดฟเดฒเตเดเตเดเต เดฑเตเดฃเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เด
เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฌเตเดจเดฑเดฟ เดฒเตเดเดฐเดฟเดคเด เดเดเตเดเตเดเตเดเดฏเตเด เดตเตเดฃเด. เดเดคเต เดธเดจเตเดคเตเดฒเดฟเดคเดฎเดพเดฃเตเดจเตเดจเต เดเดฐเตเดคเดฟ เดตเตเดเตเดทเดคเตเดคเดฟเดจเตเดฑเต เดเดดเด เดจเดฎเตเดเตเดเต เดจเตฝเดเตเด. เดเดฐเต เดชเตเดคเดฟเดฏ เดเดเดเด เดเตเตผเดคเตเดค เดถเตเดทเด เดฎเดฐเด เดธเดฎเดคเตเดฒเดฟเดคเดพเดตเดธเตเดฅเดฏเดฟเดฒเดพเดเตเดจเตเดจเต. เดฎเดฐเดเตเดเดณเต เดเดเตเดเดจเต เดธเดจเตเดคเตเดฒเดฟเดคเดฎเดพเดเตเดเดพเด เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดพเตป เดเดฐเต เดธเดฟเดฆเตเดงเดพเดจเตเดคเดตเตเด เดจเตฝเดเดฟเดฒเตเดฒ. เดธเตเดดเตเดธเต เดเตเดกเตเดเตพ เดเดฐเต เดฌเดพเดฒเตปเดธเดฟเดเต เดซเดเดเตเดทเตป เดจเตฝเดเตเดจเตเดจเต.
เดญเดพเดฐเด เดเดดเดคเตเดคเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดกเต.
/*
* ะะพะทะฒัะฐัะฐะตั ะฟะตัะฒะพะต ัะธัะปะพ ะฒ ััะตะฟะตะฝะธ 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));
}
เดซเดฒเดเตเดเตพ
- เดเดฐเต เดชเตเดคเดฟเดฏ เดฎเตเดฒเดเดคเตเดคเดฟเดจเตเดฑเต เดเตพเดชเตเดชเตเดเตเดคเตเดคเตฝ เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต O (เดฒเตเดเต n)
- เดธเตเดฐเดฟเดฏเตฝ เดจเดฎเตเดชเตผ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเต เดเดเดเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดจเตเดจเดคเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต O (เดฒเตเดเต n)
- เดธเตเดฐเดฟเดฏเตฝ เดจเดฎเตเดชเตผ เดชเตเดฐเดเดพเดฐเด เดเดฐเต เดเดเดเด เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเต เดเดตเดฟเดเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเต O (เดฒเตเดเต n)
เดตเตเดเดค O (เดฒเตเดเต n) เดเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด เด เดเตเดเตเดเดฟเดฏ เดฐเตเดชเดคเตเดคเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดตเดธเตเดคเตเดคเดฏเตเดเตเดเดพเดฏเดฟ เดเดเตเดเตพ เดชเดฃเด เดจเตฝเดเตเดจเตเดจเต.
เด เดคเตเดคเดฐเดฎเตเดฐเต เดเดเดจ เดเดตเดฟเดเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเดฎเตเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดฒ. เดฎเดฐเดเตเดเตพ เดเดเตเดเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดฐเดฟเดเตเดเตฝ เดเตเดเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเดจเตเดณเตเดณ เดเดฐเต เดชเดธเดฟเตฝ เดฎเดพเดคเตเดฐเด. เดจเดฟเดเตเดเดณเตเดเต เดถเตเดฐเดฆเตเดงเดฏเตเดเตเดเต เดจเดจเตเดฆเดฟ.
เดฑเตเดซเดฑเตปเดธเตเดเตพ
เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเตเดเดค เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดธเตเดฑเตเดฑเต เดกเดพเดฑเตเดฑ เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเตฝ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดฎเดฐเด เดจเดฟเดฑเดฏเตเดจเตเดจเต 1000000 เดเดเดเดเตเดเตพ. เดเตเดเดพเดคเต เดเดเดเดเตเดเดณเตเดเต เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดเดฒเตเดฒเดพเดคเดพเดเตเดเดฒเตเด เดเตพเดชเตเดชเตเดเตเดคเตเดคเดฒเตเด เดตเตเดฃเตเดเตเดเตเดเตเดเดฒเตเด เดเดฃเตเดเต 1000000 เดเดฐเดฟเดเตเดเดฒเต. เด เดคเดพเดฃเต 3000000 เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ. เดซเดฒเด เดตเดณเดฐเต เดฎเดฟเดเดเตเดเดคเดพเดฏเดฟ เดฎเดพเดฑเดฟ ~ 8 เดธเตเดเตเดเตปเดกเต.
เด เดตเดฒเดเดฌเด: www.habr.com