學習筆記 有根樹的表達

2021-07-24 00:02:36 字數 595 閱讀 1456

挑戰程式設計競賽(第二彈)第8章 樹——學習筆記

利用「左子右兄弟表示法」

#include using namespace std;

const int max = 100005;

const int nil = -1;

struct node tree[max];

int n, depth[max];

void rec(int u, int d);

void print(int u);

int main()

}//找出樹的根結點

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

//遞迴求深度,根結點root深度為0

rec(root, 0);

//按要求輸出

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

print(i);

return 0;

}void rec(int u, int d)

void print(int u)

cout << "]" << endl;

return;

}

表示式樹 無根樹轉化為有根樹

將無根樹轉化為有根樹 vectorg maxn void read tree 轉化過程 void dfs int u,int fa 遞迴轉化為以u為根的子樹,u的父節點為fa 主程式要設定p root 1,然後在呼叫dfs root,1 p353表示式樹 const int maxn 1000 in...

無根樹轉有根樹

乙個n n 1000000 個結點的無根樹的各條邊,並指定乙個根結點,要求把樹轉化為有根樹。輸入 結點的數目n,無根樹的各條邊,輸入乙個根結點號。輸出 各個結點的父親編號。執行結果 演算法實現 為方便起見,我們用了stl中的vector來儲存邊,g u 表示u結點的相鄰結點的編號。樹的儲存結構定義 ...

無根樹變為有根樹

即無環連通無向圖 若乙個圖中每條邊都是無方向的,則稱為無向圖。無根樹它要求每個頂點之間都直接或間接相連,且圖中無環,即只有簡單路徑。由於樹是圖的子集,這一類圖具有樹的特徵,但不具有樹狀的形式,沒有特定的根節點,故稱為無根樹。任意選取圖中某個點為根,均可將無根樹轉化為有根樹。includeusing ...