树形结构转线性结构的方法(帖子汇总)

在图论中经常遇到一些很常见的问题,比如一个非常简单的例子,给你一棵树,每一个点都有一个权值,现在动态更新一个点的权值,叫你查询一个点对路径上所有点权的和,这种问题和图论的Tree  Problem非常类似,我们可以利用树形结构转线性结构的方法来处理,我们考虑随便取一个点,比如说1,作为根,这样我们就可以得到一个DFS序列,注意我们维护一个长度为2*N的DFS序列,每次访问开始的时候,向序列中加入一个等于当前点权的元素,每次结束这个结点访问的时候,我们加入一个等于当前点权相反数的元素,举一个很简单的例子。

  1. 我们考虑边的序列是这样
  2. 3
  3. 1 2
  4. 1 3
  5. 点权是
  6. 5 7 10
  7. 那么我们得到的序列有可能是
  8. 5 7 -7 10 -10 -5
注意一个非常好的性质,我们记录访问开始的时候加入的元素的下标,那么我们可以非常快的利用前缀和来计算出根到一个点的路径上点权和是多少,还是上面的例子,点权和的答案是

    • 3
      点赞
    • 6
      收藏
      觉得还不错? 一键收藏
    • 3
      评论
    评论 3
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值