GeneralTree 一般樹形結構類

2021-08-23 12:59:28 字數 926 閱讀 3278

這個類用於一般樹形,每個節點可以有多個分支,且數目不定。

可以看做是二叉樹的變形形式。乙個節點除了父指標外還有左右兩個指標。

左指標為孩子節點的起始指標,右指標為同父節點的兄弟節點的指標

例如:a的左指標為b,右指標為c,c的左指標為e,右指標為d

則,a,c,d為同兄弟節點。b為a的子節點,e為c的子節點。

這裡使用到了generaltreenode類

這個樹沒有delete操作。因為我暫時不知道這個樹類在什麼地方會用到delete操作。而且這個樹的查詢是o(n),相比與排序二叉樹那是慢的太多了。不過這個樹在未知每個節點的分叉個數時,可以使用。其他的地方,個人認為還是盡量使用其他樹形。

這個generaltree類還要進行大量的改進。

另外因為繼承的緣故,這裡大量使用dynamic_cast<>()方法。為了將generaltreenode類轉變為treenode類。這裡我暫時還是不知道有什麼好的方法。

另外注意這裡的print函式,必須傳入乙個函式指標。因為樹不知道你的列印資料方法和格式,其實我這裡想了很多,最後感覺還是這種方法好點。感覺應該在treenode類中新增乙個virtual print()函式來負責data的列印工作。

開始的時候,想過使用模板的方法,在treenode中新增乙個模板引數。後來發現這樣做對資料控制不利,而且我要改動非常多的**,不如直接在generaltreenode類中新增乙個virtual print()函式,然後傳入指標引數去控制列印。

當然這樣做的缺點在於如果還有類繼承了treenode,而且也需要有print data 的方法。那麼**還要改動。但是現在的需求並沒有看出這樣做的趨勢..所以暫時還是在generaltreenode類中新增乙個virtual print()函式.

具體**如下:

這裡可能還需要乙個list.h檔案,大家可以使用stl中的代替,也可以自己寫,也可以使用我的..

樹形DP一般解題思路

注意先求下屬,再求上司。利用鏈式前向星儲存樹 p1352 沒有上司的舞會 include using namespace std const int maxn 6e3 10 int n,r maxn head maxn int cnt 邊的編號 int d maxn 統計編號節點父節點的個數 int...

01揹包(一般dp實現 樹形dp實現)

一般dp,要遍歷完整個二維陣列。include include using namespace std int dp 10000 10000 int w 10000 v 10000 bool chosen 10000 10000 intmain for int i 1 i m i else else...

SEO一般步驟

seo並不是簡單的幾個秘訣或幾個建議,而是一項需要足夠耐心和細緻的腦力勞動。大體上,seo包括六個環節 2 架構分析 結構符合搜尋引擎的爬蟲喜好則有利於seo。架構分析包括 剔除 架構不良設計 實現樹狀目錄結構 導航與鏈結優化。3 目錄和頁面優化 seo不止是讓 首頁在搜尋引擎有好的排名,更重要的是...