1//層次遍歷演算法2//
順序環形佇列
3 typedef struct
sqqueue; 89
void initqueue(sqqueue *&qu)
1015
16bool enqueue(sqqueue *&qu,btnode *b)
1724
25bool dequeue(sqqueue *&qu,btnode *&b)
2632
33bool queueempty(sqqueue *&qu)
3437
38void levelorder(btnode *b)
3954}55
56//
用層次遍歷輸出根節點到所有葉子節點的路徑(迷宮問題的思路)
57//
結點型別
58 typedef struct
nodetype;
62//
順序隊
6364
void allpath2(btnode *b)
6586 cout88if(p.b->lchild !=null)
8994
if(p.b->rchild !=null)
95100
}101
}102
//先序序列和中序序列生成二叉樹
103 btnode *createbt1(char *pre,char *in,int
n)104
117 k = p - in
;118 b->data = *p;
119 b->lchild = createbt1(pre + 1,in
,k);
120 b->rchild = createbt1(pre+k+1,p+1,n-k-1
);121
122return
b;123
}124
//後序序列和中序序列生成二叉樹
125 btnode *createbt2(char *in,char *post,int
n)126
139 k = p - in
;140 b->data = *p;
141 b->lchild = createbt2(in
,post,k);
142 b->rchild = createbt2(in+k+1,post+k,n-k-1
);143
144return
b;145
} 146
//二叉樹順序儲存結構轉換為鏈式儲存結構
147typedef elemtype sqbtree[maxsize];
148 btnode *trans(sqbtree a,int
i)149
162163//
中序線索化二叉樹
164 typedef struct
tbtnodetbtnode;
171172 tbtnode *pre;
173174
void thread(tbtnode *&p)
175
184else
185 p->rtag = 0
;186
if(pre->rchild ==null)
187
191else
192 pre->rtag = 0
;193 pre =p;
194 thread(p->rchild);
195}
196}
197198 tbtnode *createthread(tbtnode *b)
199216
return
root;
217}
218219
//構造哈夫曼樹
220 typedef struct
htnode;
227228
void createht(htnode ht,int
n0)229
248else
if(ht[k].weight 249253
}254
}255 ht[lnode].parent =i;
256 ht[rnode].parent =i;
257 ht[i].lchild =lnode;
258 ht[i].rchild =rnode;
259 ht[i].weight = ht[lnode].weight +ht[rnode].weight;
260}
261}
262263
//根據哈夫曼樹求對應的哈夫曼編碼
264 typedef struct
265hcode;
269void createhcode(htnode ht,hcode hcd,int
n0)270
285 hc.start++;
286 hcd[i] =hc;
287}
288}
289290
//用樹實現並查集
291//
並查集節點型別
292 typedef struct
ufstree;
297//
初始化並查集
298void make_set(ufstree t,int
n)299
306}
307//
查詢乙個元素所在的集合
308int find_set(ufstree t,int
x)309
315//將兩個元素所在的集合合併
316void union(ufstree t,int x,int
y)317
328 }
二叉樹相關演算法 二
leetcode 437.path sum iii 第乙個想法就是遍歷二叉樹,找出每個節點的可能性。這個思路時間複雜度為o n 2 private int num public intpathsum treenode root,int sum private void recur treenode ...
二叉樹相關演算法
節點 class node t public node t left public node t right public node t value,node t left,node t right public node t value this value,null null 二叉樹 前中後深度...
二叉樹相關
1.首先建立乙個樹節點,節點有值,左節點和右節點 author 張夢楠 title package description date 2018 5 2519 27 blog www.itzmn.com 樹的節點類 public class treenode public treenode int v...