二叉树迭代

时间:2016-10-10 05:24:23

标签: tree

如果我想执行从索引0到索引T的添加查询。我有二进制值T.所以对于例如我有0111010,所以在删除最右边后变为01110位。取0为左,1为右。每当我向右移动时,我都会添加元素,最后在索引T处添加元素。这是否意味着每当遇到1时我都会访问BIT []数组,或者有不同的方式?

2 个答案:

答案 0 :(得分:0)

看,我知道这个问题的来源。它是十分长的codechef。请不要在现场比赛中提问。

答案 1 :(得分:0)

嗯,我知道你会对正确的逻辑感到绝望。我很努力地解决了这个问题,经过多次尝试我得到了一个AC(多么感觉!)。不要考虑有关fenwick树的任何内容,而是为给定的计算编写模拟。

Fdown(i) = (i & (i + 1))

在循环中执行,例如

cout<<"\n\nEnter L : ";
cin>>l;
while(l > -1)
{
    cout<<bitset<32>(l)<<"\n";
    l = (l & (l+1))-1;
}

以小数形式输入L. 您将开始看到您必须找到的内容。 (不要考虑关于BIT的任何其他事项。)