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

2021-08-17 12:28:27 字數 621 閱讀 4615

//將無根樹轉化為有根樹

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;

int lch[maxn],rch[maxn];

char op[maxn];//每個節點的左右編號及其字元 

int nc=0;//節點數 

int build_tree(char *s,int x,int y)

for(i=x;i

}if(ch1<0)

ch1=ch2;

if(ch1<0)

return build_tree(s,x-1,y-1);

u=++nc;

lch[u]=build_tree(s,x,ch1);

lrh[u]=build_tree(s,ch+1,y);

op[u]=s[ch1];

return u;

無根樹轉有根樹

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

無根樹變為有根樹

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

無根樹轉有根樹

輸入乙個n個節點的無根樹的各條邊,並指定乙個根節點,要求把該樹轉化為有根樹,輸出各個節點的父節點編號。樹是一種特殊的圖,因此可以使用鄰接矩陣來表示。如果使用二維陣列來儲存鄰接矩陣,則需要o n2 個元素的空間,因此改用vector陣列。從根節點開始對樹進行dfs。遍歷到每個節點時,使用陣列p來儲存該...