求一顆樹以任意點為根,其他點到根的和

2022-06-27 02:45:11 字數 600 閱讀 4362

思路 : 一遍 dfs 可以求到以任意乙個點為根,所有點所含孩子的個數,cnt陣列記錄

考慮每一條邊的貢獻時,即此邊左右節點數相乘

第2遍 dfs, 以其他點為根時,例如以2為根,先去掉 0-1 邊的貢獻,再加上以2為根 0和1 對 2 的貢獻

**示例 : 

class solution 

}cnt[x] += sum;

}void dfs2(int x, int n)}}

vectorsumofdistancesintree(int n, vector>& edges)

memset(cnt, 0, sizeof(cnt));

memset(pt, 0, sizeof(pt));

dfs(0);

memset(pt, 0, sizeof(pt));

dfs2(0, n);

for(int i = 0; i < n; i++)

return sum;}};

求任意一顆二叉樹的繁茂度

在 資料結構 嚴蔚敏版上的習題看到這個問題。繁茂度的定義 各層節點數的最大值與樹的高度的乘積 樹的深度好求,遞迴呼叫就行了。關鍵在於如何求出各層的最大節點樹?下面是我的一種實現方法 bitree.h include include include include using namespace st...

一棵樹是否為另一顆樹的子結構

題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 分析 一開始我把子結構理解成一棵樹得在另一顆樹的末端才算是子結構,後來看了討論區發現可以位於樹的中間位置。深度遍歷二叉樹知道找到a的乙個結點值等於b的根節點的值,然後判斷從這兩個結點開始對比,b是否在a...

二叉搜尋樹 (判斷是否為同一顆搜尋樹)

判斷兩序列是否為同一二叉搜尋樹序列 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組...