```cpp
tree[i].val = a[i];
```
应该是
```cpp
tree[i].val = a[l];
```
by iMya_nlgau @ 2021-01-26 17:51:49
@[Merron](/user/338370) 还有这句话删掉
```cpp
if(tree[i].l < l || tree[i].r > r)
return 0;
```
by iMya_nlgau @ 2021-01-26 17:54:01
@[Sapphire6575737973](/user/176569) 这句话没啥大碍吧?
by Merron @ 2021-01-26 17:55:06
@[Sapphire6575737973](/user/176569) 不好意思,这句话打反了。。。
by Merron @ 2021-01-26 17:56:54
@[Merron](/user/338370) 有可能当前节点的子节点还会包含在查询区间里,我觉得不能 return 0
by iMya_nlgau @ 2021-01-26 17:58:20
啊这
by iMya_nlgau @ 2021-01-26 17:58:46
@[Sapphire6575737973](/user/176569) 但我又WA了...
by Merron @ 2021-01-26 17:59:45
@[Merron](/user/338370) 你是不是调试语句没删啊。。。
by iMya_nlgau @ 2021-01-26 18:00:54
@[Sapphire6575737973](/user/176569) 没有啊?照你的做了。
by Merron @ 2021-01-26 18:03:03
@[Merron](/user/338370) 我是说这个你没删
```cpp
for (int i = 1; i <= n ;i ++)
{
printf("%d ", tree[i].val);
}
```
by iMya_nlgau @ 2021-01-26 18:05:53