集合的所有子集

 

 假设集合A = {1,2,3},它的所有集合是 {{1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}, {}}({}表示空集}

 

可以这样理解这张图,从集合A的每个元素自身分析,它只有两种状态,或是某个子集的元素,或是不属于任何子集,所以求子集的过程就可以看成对每个元素进行“取舍”的过程。(n个元素有2的n次方个组合)

每一层左边节点表示加入该层元素,右边表示不加入。

第二层表示对第1个元素的处理,第i层表示对第(i-1)个元素的处理

n个元素会有n层。

上图中,根结点是初始状态,叶子结点是终结状态,该状态下的8个叶子结点就表示集合A的8个子集。

第i层(i=1,2,3…n)表示已对前面i-1层做了取舍,所以这里可以用递归了。

整个过程其实就是对二叉树的先序遍历。


 

posted @ 2018-12-20 15:34  鹏鹏进阶  阅读(1919)  评论(0编辑  收藏  举报