集合的分区

时间:2011-12-07 10:06:11

标签: java arrays recursion tree nodes

在树的最后一级我必须生成构成原始集的所有可能子集。但那些子集不应该有任何共同的元素enter image description here 这里的原始集合是{a,b,c}

图形描述:

in 我的意思是下一个成员将在子集中 out 下一个成员将不在子集中 在此先感谢

我写了这个递归代码由于这个data stucture 这会让树上有很多孩子

public class Mymethod {
    public GenericTreeNode<String> insert(GenericTreeNode<String> root,GenericTreeNode<String> NewNode)
    {
    int index=root.getNumberOfChildren()-1;
    if(root.hasChildren())
    while(index!=-1)
    {
    insert(root.getChildAt(index),NewNode);
    index--;
    }
    root.children.add(NewNode);
    ArrayList ChList = new ArrayList();
    ChList.add("{"+root.getData()+","+NewNode+"}");
    ChList.add("{"+root.getData()+"}"+"{"+NewNode+"}");
    root.children=ChList;
    return root;
    }
    }

我为我的调试编写了Simple Main,我的调试将回答到树的level2

public class Main {
    public static void main(String[] args) {

    GenericTreeNode<String> root=new GenericTreeNode<String>("a");
    GenericTreeNode<String> str=new GenericTreeNode<String>("b");
    GenericTreeNode<String> str1=new GenericTreeNode<String>("c");
    Mymethod m=new Mymethod();
    GenericTreeNode<String> parent=m.insert(root, str);
    GenericTreeNode<String> parent1=m.insert(parent, str1);
        }

问题在于root.getChildAt(index)它会给出一个例外我知道为什么但我不知道如何解决问题是我应该有节点但这里的ChList是字符串的类型 由于链接,我应该调用addchildAt,但我不知道怎么做? 任何想法都会如此欣赏!

我真的需要帮助!真的。

1 个答案:

答案 0 :(得分:0)

我不完全确定你想要完成什么,但你的问题似乎与powersets的产生有关。 查看a viable algorithmwikipedia discussion of the terms