假設集合A = {1,2,3},它的全部集合是 {{1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}, {}}({}表示空集}spa
能夠這樣理解這張圖,從集合A的每一個元素自身分析,它只有兩種狀態,或是某個子集的元素,或是不屬於任何子集,因此求子集的過程就能夠當作對每一個元素進行「取捨」的過程。(n個元素有2的n次方個組合)blog
每一層左邊節點表示加入該層元素,右邊表示不加入。遞歸
第二層表示對第1個元素的處理,第i層表示對第(i-1)個元素的處理二叉樹
n個元素會有n層。遍歷
上圖中,根結點是初始狀態,葉子結點是終結狀態,該狀態下的8個葉子結點就表示集合A的8個子集。im
第i層(i=1,2,3…n)表示已對前面i-1層作了取捨,因此這裏能夠用遞歸了。img
整個過程其實就是對二叉樹的先序遍歷。
集合