leetcode 834樹中距離之和

2021-10-10 01:21:00 字數 653 閱讀 8298

這道題考察的是樹形dp,需要兩次dfs。第一次dfs建立樹形結構,並求得根節點到其他點的距離和。第二次dfs是通過交換根節點,獲得以其他點作為根節點的距離和。

對於根節點u和它的子結點v,u與其他節點的距離和dp[u]可以表示為σ(d

p[v]

+sz[

v]

)\sigma (dp[v]+sz[v])

σ(dp[v

]+sz

[v])

,其中sz[v]為子結點v的子結點個數。那麼,如果交換u,v的位置,dp[u] -= dp[v] +sz[v], sz[u]-=sz[v],dp[v] += dp[u]+sz[u] sz[v]+=sz[u]

class

solution);

for(

auto e:edges)

dfs1(0

,-1)

;dfs2(0

,-1)

;return res;

}void

dfs1

(int u,

int v)

return;}

void

dfs2

(int u,

int v)

return;}

};

LeetCode 834 樹中距離之和

原題目 思路 採用樹形動態規劃的思想。對於每乙個節點來說,所有節點到他的距離之和的狀態轉移方程為 其中dp v 代表以v為根的所有節點到他的距離,sz v 表示已v為根的子樹節點的數量。dp u dp u dp v sz v sz u sz u sz v dp v dp v dp u sz u sz...

leetcode 834 樹中距離之和

題目鏈結 給定乙個無向 連通的樹。樹中有 n 個標記為 0 n 1 的節點以及 n 1 條邊 第 i 條邊連線節點 edges i 0 和 edges i 1 返回乙個表示節點 i 與其他所有節點距離之和的列表 ans。說明 1 n 10000 class solution if n 2 vecto...

834 樹中距離之和

給定乙個無向 連通的樹。樹中有 n 個標記為 0.n 1 的節點以及 n 1 條邊 第 i 條邊連線節點 edges i 0 和 edges i 1 返回乙個表示節點 i 與其他所有節點距離之和的列表 ans。示例 1 輸入 n 6,edges 0,1 0,2 2,3 2,4 2,5 輸出 8,12...