diff --git a/notes-and-examples/2026.05.27/find_depth.py b/notes-and-examples/2026.05.27/find_depth.py new file mode 100644 index 0000000..38f7fcb --- /dev/null +++ b/notes-and-examples/2026.05.27/find_depth.py @@ -0,0 +1,36 @@ +# Tree example: +# 10 +# / \ +# 5 15 +# / \ \ +# 3 7 20 + + +class Node: + def __init__(self, value, left=None, right=None): + self.value = value + self.left: Node | None = left + self.right: Node | None = right + + +root_node = Node(10) +root_node.left = Node(5) +root_node.left.left = Node(3) +root_node.left.right = Node(7) +root_node.right = Node(15) +root_node.right.right = Node(20) + + +def find_depth(root: Node | None, subtree_depth=0) -> int: + if root is None: + return subtree_depth + + left_depth = find_depth(root.left, subtree_depth + 1) + right_depth = find_depth(root.right, subtree_depth + 1) + return max(left_depth, right_depth) + + +print(find_depth(root_node)) + +root_node.right.right.right = Node(1) +print("After adding another level:", find_depth(root_node)) diff --git a/notes-and-examples/2026.05.27/homework.py b/notes-and-examples/2026.05.27/homework.py new file mode 100644 index 0000000..d33d746 --- /dev/null +++ b/notes-and-examples/2026.05.27/homework.py @@ -0,0 +1 @@ +# Implement red-black rebalancing in code. diff --git a/notes-and-examples/2026.05.27/invert_tree.py b/notes-and-examples/2026.05.27/invert_tree.py new file mode 100644 index 0000000..884db8d --- /dev/null +++ b/notes-and-examples/2026.05.27/invert_tree.py @@ -0,0 +1,40 @@ +# Tree example: +# 10 +# / \ +# 5 15 +# / \ \ +# 3 7 20 + + +class Node: + def __init__(self, value, left=None, right=None): + self.value = value + self.left: Node | None = left + self.right: Node | None = right + + +root_node = Node(10) +root_node.left = Node(5) +root_node.left.left = Node(3) +root_node.left.right = Node(7) +root_node.right = Node(15) +root_node.right.right = Node(20) + + +def invert_tree(root: Node | None): + if root is None: + return + + invert_tree(root.left) + invert_tree(root.right) + + root.left, root.right = root.right, root.left + + +invert_tree(root_node) + +print(root_node.left.value) +print(root_node.right.value) +print(root_node.left.left.value) +print(root_node.right.right.value) +print(root_node.right.left.value)