From cd5ac0012684615dd4b3e13dff394572ce077239 Mon Sep 17 00:00:00 2001 From: bt3gl <138340846+bt3gl-cryptographer@users.noreply.github.com> Date: Tue, 8 Aug 2023 13:28:00 -0700 Subject: [PATCH] Update README.md --- dynamic_programming/README.md | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/dynamic_programming/README.md b/dynamic_programming/README.md index dd27748..8b59456 100644 --- a/dynamic_programming/README.md +++ b/dynamic_programming/README.md @@ -154,6 +154,47 @@ def climb_stairs_memoization(n: int) -> int:
+* another good examples is calculating all possible subnodes in a tree: + +
+ +```python +class Node: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + + +def all_possible_bst(start, end, memo): + + result = [] + if start > end: + return result + + if (start, end) in memo: + return memo[(start, end)] + + for i in range(start, end + 1): + left = all_possible_bst(start, i - 1, memo) + right = all_possible_bst(i + 1, end, memo) + + for l in left: + for r in right: + result.append(Node(i, l, r)) + + memo[(start, end)] = result + return result + + +def generate_trees(n): + + memo = {} + return all_possible_bst(1, n, memo) +``` + +
+ ---- ### time complexity @@ -208,3 +249,5 @@ def backtrack(candidate): remove(next_candidate) ```` +
+