from utils.memory_cell import MemoryCell class BinaryTreeNode(MemoryCell): def __init__(self, value): super().__init__(value) self.left = None self.right = None def height(self): left_height = self.left.height() if self.left else 0 right_height = self.right.height() if self.right else 0 return 1 + max(left_height, right_height) def __repr__(self): return f"TreeNode(value={self.value}, left={self.left}, right={self.right})" def __str__(self): return str(self.value) def graphviz_rep(self, row, col, dot): dot.node(str(id(self)), label=str(self.value), pos=f"{col},{-row}!")