code: def lowestCommonAncestor(
      self, root: "TreeNode", p: "TreeNode", q: "TreeNode"
  ) -> "TreeNode":
      if root is None:
          return None
  
      leftRes = self.lowestCommonAncestor(root.left, p, q)
      rightRes = self.lowestCommonAncestor(root.right, p, q)
  
      if (leftRes and rightRes) or (root in [p, q]):
          return root
      else:
          return leftRes or rightRes
  
label_desc: Use image node_id 1 for calling the Solution obj's underlying member method code with example usage: obj.lowestCommonAncestor(root, p, q) and returns: None, root, unknown