Add tree exercises
This commit is contained in:
36
notes-and-examples/2026.05.27/find_depth.py
Normal file
36
notes-and-examples/2026.05.27/find_depth.py
Normal file
@@ -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))
|
||||
1
notes-and-examples/2026.05.27/homework.py
Normal file
1
notes-and-examples/2026.05.27/homework.py
Normal file
@@ -0,0 +1 @@
|
||||
# Implement red-black rebalancing in code.
|
||||
40
notes-and-examples/2026.05.27/invert_tree.py
Normal file
40
notes-and-examples/2026.05.27/invert_tree.py
Normal file
@@ -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)
|
||||
Reference in New Issue
Block a user