Skip to content

Instantly share code, notes, and snippets.

@bnlucas
Created August 11, 2025 14:55
Show Gist options
  • Save bnlucas/71641f502ce17bb686626bd5b7add77f to your computer and use it in GitHub Desktop.
Save bnlucas/71641f502ce17bb686626bd5b7add77f to your computer and use it in GitHub Desktop.
from __future__ import annotations
class Node:
def __init__(self, value: str, left: 'Node' | None = None, right: 'Node' | None = None):
self.value = value
self.left = left
self.right = right
def __repr__(self) -> str:
left = ""
right = ""
if self.left is not None:
left = f"{self.left.value}"
if self.right is not None:
right = f"{self.right.value}"
return f"{self.value}\n{left} {right}"
node_d = Node('D')
node_e = Node('E')
node_f = Node('F')
node_b = Node('B', left=node_d, right=node_e)
node_c = Node('C', right=node_f)
node_a = Node('A', left=node_b, right=node_c)
def reverse_node(root: 'Node'):
if root is None:
return None
node = Node(root.value)
if root.left is not None:
node.right = reverse_node(root.left)
if node.right is not Node:
node.left = reverse_node(root.right)
return node
if __name__ == '__main__':
r_node_a = reverse_node(node_a)
r_node_b = r_node_a.right
r_node_c = r_node_a.left
r_node_d = r_node_b.right
r_node_e = r_node_b.left
r_node_f = r_node_c.left
print(r_node_a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment