Leetcode # 894. All Possible Full Binary Trees
- 2023.08.02
- ★★ Medium Binary Tree Combination LeetCode
https://leetcode.com/problems/all-possible-full-binary-trees
Solution
n 個節點的 Full Binary Tree 種類數是 C(n – 1) / 2
C(n – 1) / 2 亦是 time complexity
而每一種 Full Binary Tree 都會花費 n 的空間建立
所以 space complexity 為 nC(n – 1) / 2
考慮 output 所需空間不計入的情況下則為O(1)
Time Complexity: O(C(n – 1) / 2)
Space Complexity: O(1)
(The input and output generally do not count towards the space complexity.)
class Solution:
def allPossibleFBT(self, n: int) -> List[Optional[TreeNode]]:
def all_possible_fbt(n):
roots = []
if n % 2 != 1:
return []
if n == 1:
return [TreeNode(0)]
rest = n - 1
for left in range(1, rest, 2):
right = rest - left
for l_root in all_possible_fbt(left):
for r_root in all_possible_fbt(right):
roots.append(TreeNode(0, l_root, r_root))
return roots
return all_possible_fbt(n)
Last Updated on 2023/08/16 by A1go