public static void Main()
Console.WriteLine("Hello World");
public static Node CommonAncestor(Node root, Node node1, Node node2)
if (node1 == root || node2 == root)
var isNode1Left = Covers(root.Left, node1);
var isNode2Left = Covers(root.Left, node2);
if (isNode1Left != isNode2Left)
return CommonAncestor(root.Left, node1, node2);
return CommonAncestor(root.Right, node1, node2);
private static bool Covers(Node root, Node node)
return Covers(root.Left, node) || Covers(root.Right, node);
public Node Parent { get; set; }
public Node Left { get; set; }
public Node Right { get; set; }