樹的靜態寫法

2021-09-26 04:32:42 字數 676 閱讀 6624

此處的樹,子結點的個數沒有限制且子結點沒有先後次序的樹

樹與二叉樹的不同之處就在於樹的子結點數可能會有很多,如果利用動態寫法,利用鍊錶的指標來指示的話會比較麻煩,利用靜態寫法,也就是用陣列下標來代替所謂的位址,當然這需要事先開乙個大小不低於結點上限個數的結點陣列,因此結構體node的定義如下:

struct nodenode[maxn];//結點陣列,maxn為結點上限個數
在上面的定義中,由於無法預知子結點的個數,因此child陣列的長度只能開到最大,而這對一些結點個數比較多的題目來說顯然是不可能的,開闢的空間過多會超過限制。因此需要使用vector,結構體的定義如下:

struct nodenode[maxn];//結點陣列,maxn為結點上限個數
與二叉樹的靜態實現相似,當需要新建乙個結點時,就按順序從陣列中取出乙個下標即可

int index=0;

int newnode(int v)

若是題目中給出結點的編號為從0-n-1連續或從1-n連續,則不需要newnode函式,題目中的編號就可以直接作為node陣列的下標。

如果題目中不涉及資料域的情況,只需要樹的結構,則上述的結構體可以直接轉換為vector陣列,即vectorchild[maxn],,每個vector都存放了各結點的所有子結點 

樹的靜態寫法

建立一棵樹,一般有鄰接表,靜態寫法,動態寫法等等,雖然寫法不同但是核心不變,靜態寫法和鄰接表相比其他更方便下面介紹靜態寫法 每乙個節點由資料和它的子節點組成,這裡用vector陣列將子節點的 位址 也就是節點下標 struct node node maxn 這裡建立圖中的樹並按層序和前序歷遍整棵樹 ...

PHP 偽靜態規則 寫法

偽靜態是相對真實靜態來講的,通常我們為了增強 搜尋引擎 的友好面,都將文章內容生成靜態頁面,但是有的朋友為了實時的顯示一些資訊。或者還想運用動態指令碼解決一些問題。不能用靜態的方式來展示 內容。但是這就損失了對搜尋引擎的友好面。怎麼樣在兩者之間找個中間方法呢,這就產生了偽靜態技術。就是展示出來的是以...

靜態主席樹

首先主席樹解決什麼樣的問題?最經典的問題就是 區間第k小問題 也就是指定乙個區間,要求求出這個區間中第k小的數字 在搞懂什麼是主席樹之前,我們要先對權值線段樹有一定的了解,下面我們就先說一下權值線段樹,然後詳細說一下主席樹以及主席樹程式的實現.權值線段樹 每個葉子節點的數值表示的是 陣列中含有這個數...