生成二叉树的所有可能子树

时间:2015-09-10 22:50:42

标签: algorithm

我有一个二叉树,我想从中生成所有可能的子树。 示例:

   1
  /  \
2     3 
     /  \
    4    5 

可能的输出是:

1, 2, 3, 4, 5.
(1,2) (1,3) 
(1,3,4) (1,3,5) 

这可能吗?我需要一个算法来生成输出?

1 个答案:

答案 0 :(得分:0)

让我以伪代码发布答案:

首先让我告诉你我是如何实现三个的:

Node{
 Node rightNode;
 Node leftNode;
 String value;
}

在此之后是算法:

Algoritm{
    String[] posibleThrees;

    String getPosibleThrees(Node root){
        getPosibleThree(root, "");
        return posibleThrees;
    }

    void getPosibleThree(Node node, String nodesBefore){
        posibleThrees[] = nodesBefore; //adding nodes before

        if (node.rightNode != null){
            getPosibleThree(node.rightNode, nodesBefore+" "+node.value);
        } 

        if (node.leftNode != null) {
           getPosibleThree(node.leftNode, nodesBefore+" "+node.value);
        }
    }
}