暖 墟 關於 樹 的專題

2021-08-20 06:29:58 字數 1875 閱讀 6611

one. 二叉樹(binary tree)

根結點(root)、左子樹(left subtree)和右子樹(right subtree)組成,

而左、右子樹分別是一棵二叉樹。注意在計算機中,樹一般是「倒置」的,即根在上,葉子在下。

樹(tree)和二叉樹類似,區別在於每個結點不一定只有兩棵子樹。

書的內容也是樹狀結構,根結點有12棵子樹:第1章、第2章、第3章、……、第12章,而第1章又有5棵子樹:1.1、1.2、……、1.5。

不管是二叉樹還是樹,每個非根結點都有乙個父親(father),也稱父結點。

1.二叉樹的編號

#include #include #include #include #include #include #include #include #include #include using namespace std;

/*【小球下落】uva 679(模擬)

有一棵二叉樹,最大深度為d,且所有葉子的深度都相同。

結點從上到下從左到右編號1, 2, 3,…, 2^d-1。在結點1處放乙個小球,會下落。

每個內結點上都有乙個開關,初始關閉;有小球落到乙個開關上時,開關狀態改變。

當小球到達乙個內結點時,如果該結點上的開關關閉,則往左走,否則往右走,直到走到葉子結點。

一些小球從結點1處依次開始下落,最後乙個小球將會落到**呢?

輸入葉子深度d和小球個數i,輸出第i個小球最後在的葉子編號。d≤20。輸入最多包含1000組資料。 */

如果把結點從上到下從左到右編號為1,2,3……,則結點k的左右子結點編號分別為。 */

int id[1<<20];//2^20

int main(),或者,輸出-1。 */

/*輸入:(11,ll) (7,lll) (8,r) (5,) (4,l) (13,rl) (2,llr) (1,rrr) (4,rr) ()

(3,l) (4,r) () 輸出: 5 4 8 11 13 4 7 2 1 // -1 */

const int maxn=10010;

int ans[maxn],flot,k;

bool failed;

struct node

}*head;

void addnode(int v,char *s)

else if(s[i]=='r')

}if(cur->h_v)failed=true;//注意要加上failed判斷沒有出現數字的情況;

cur->v=v;

cur->h_v=true;

}void print()

if(flot&&!failed)for(int i=0;il);

freenode(cur->r);

free(cur);

}int main()

int v;

sscanf(&s[1],"%d",&v);

addnode(v,strchr(s,',')+1);

}return 0;

}

暖 墟 動態規劃 斯坦納樹的學習與練習

斯坦納樹就是在給定邊集中找最短網路 給定點 擴充套件點 使給定點聯通。包含給定k個節點的最小生成樹,一般k很小,在網格圖上。f i s 表示以點i為根,已和s集合裡的點聯通的生成樹的最小代價。1.i的不同子樹的合併,f i s min 2.考慮新增給定子集外的點的情況,f i s f j s a i...

暖 墟 KMP 模式匹配的演算法流程

字串匹配。給你兩個字串,尋找其中乙個字串是否包含另乙個字串。如果包含,返回包含的起始位置。如下面兩個字串 char str bacbababadababacambabacaddababacasdsd char ptr ababaca str有兩處包含ptr。分別在str的下標10,26處。我們從原始...

暖 墟 計算幾何 半平面交的學習與練習

其中每個半平面用一條有向直線表示,它的左側就是它所代表的半平面。半平面交通常是乙個凸多邊形,也有時候會得到乙個無界多邊形,甚至是線段 直線 點或 空 無論怎樣結果一定是 凸 的。一般用乙個很大的矩形 4個半平面的交 代替 整個平面 計算結果之後刪除這4個人工半平面。這樣,在計算的過程中,每加入乙個半...