01 · Question
Given two nodes with parent pointers, find their lowest common ancestor.
02 · Solution
1def lca(node1: TreeNode, node2: TreeNode) -> TreeNode:2 def depth(node: TreeNode) -> int:3 d = 04 while node:5 node = node.parent6 d += 17 return d8 d1, d2 = depth(node1), depth(node2)9 while d1 > d2:10 node1 = node1.parent11 d1 -= 112 while d2 > d1:13 node2 = node2.parent14 d2 -= 115 while node1 != node2:16 node1 = node1.parent17 node2 = node2.parent18 return node1