问题:
给定完满二叉树的节点数,要求输出所有的完满二叉树。
思路:
如果节点数为N,则左右子树的节点为i和N-1-i,然后递归构造即可。
代码:
public List<TreeNode> allPossibleFBT(int N){
List<TreeNode> list = new LinkedList<TreeNode>();
if(N==1){
list.add(new TreeNode(0));
return list;
}
for(int i = 1;i< N-1;i+=2){
List<TreeNode> list1= allPossibleFBT(i);
List<TreeNode> list2 = allPossibleFBT(N-1-i);
for(TreeNode left:list1)
for(TreeNode right:list2){
TreeNode node = new TreeNode(0);
node.left = left;
node.right = right;
list.add(node);
}
}
return list;
}