关于线段树
  • 板块灌水区
  • 楼主knya
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/9/3 09:51
  • 上次更新2023/11/2 23:43:55
查看原帖
关于线段树
993783
knya楼主2023/9/3 09:51

题目

Node query(int u, int l, int r)
{
    if (tr[u].l >= l && tr[u].r <= r) return tr[u];
    else
    {
        int mid = tr[u].l + tr[u].r >> 1;
        if (r <= mid) return query(u << 1, l, r); // 左子树
        else if (l > mid) return query(u << 1 | 1, l, r); // 右子树
        else // 在左右两边
        {
            auto left = query(u << 1, l, r);
            auto right = query(u << 1 | 1, l, r);
            Node res;
            pushup(res, left, right);
            return res;
        }
    }
}

看不懂这两行的 if 判断,有大佬能讲一下吗。

if (r <= mid) return query(u << 1, l, r); // 左子树
        else if (l > mid) return query(u << 1 | 1, l, r); // 右子树
2023/9/3 09:51
加载中...