一般寫的字典樹都是雙陣列的形式,但是當字元的數量很多時,就會占用大量的記憶體,初始化操作也會變慢。這時,就可以用左孩子右兄弟的寫法,來以時間換空間。
下面是自己寫的乙個:
1 #include 2 #include 3 #include 45using
namespace
std;67
const
int maxnode=100000;8
9struct
trie
1016
void
init()
1723
24void insert(const
char*str)
2533
if(j==0)///
a new node
3441 u=j;42}
43 flag[j]=true;44
}4546bool query(const
char*str)
4755
if(j==0) return
false
;56 u=j;57}
58return
flag[j];59}
6061
}tree;
6263
intmain()
6474
else
if(d==2)75
78}79return0;
80 }
3422 左孩子右兄弟
對於一棵多叉樹,我們可以通過 左孩子右兄弟 表示法,將其轉化成一棵二叉樹。如果我們認為每個結點的子結點是無序的,那麼得到的二叉樹可能不唯一。換句話說,每個結點可以選任意子結點作為左孩子,並按任意順序連線右兄弟。給定一棵包含 n 個結點的多叉樹,結點從 1 至 n 編號,其中 1 號結點是根,每個結點...
左孩子右兄弟表示法的任意有根樹的遍歷
演算法導論 p.248 10.4 4題目描述 對於乙個含n個結點的任意有根樹,寫出乙個o n 時間的過程,輸出其所有關鍵字,該樹以左孩子右兄弟表示法儲存。與二叉樹的遍歷類似 class tree def init self,val self.val val self.left child none ...
把二叉樹轉變為左孩子右兄弟樹
erchatoshu.cpp 定義控制台應用程式的入口點。include stdafx.h include includeusing namespace std 二叉樹節點結構 typedef struct treenode position typedef struct treenode sear...