1. LeetCode894题目链接链接
https://leetcode-cn.com/problems/all-possible-full-binary-trees/
2.题目解析
这个题刚看到,一脸懵逼。一点思路没有,只能看下题解,看完题解之后但还是一直半解,但是大概的思路是有了,所谓满二叉树,就是一个节点下,只能有0或者2个节点。所以节点数一定是个奇数。然后假设有5个节点,除了第一个节点之外,左边只能是3或者是1,右边也是只能是3或者1。我们只需要在3个节点之后,分别计算左右两边的节点数量。然后使用递归的方式,继续往下计算。
public List<TreeNode> allPossibleFBT(int N) {
List<TreeNode> list = new ArrayList<>();
if (N == 1 ) {
list.add(new TreeNode(0));
} else if (N % 2 == 0){
}else {
TreeNode node;
for (int i = 1; i < N; i += 2) {
//先递归左边,在递归右边
for (TreeNode left : allPossibleFBT(i)) {
for (TreeNode right : allPossibleFBT(N - i - 1)) {
node = new TreeNode(0);
node.left = left;
node.right = right;
list.add(node);
}
}
}
}
return list;
}
提交结果
网友评论