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)
````
+
+