Como encontrar o menor ancestral comum de dois nós em qualquer árvore binária?

A Árvore Binária aqui pode não ser necessariamente uma Árvore de Pesquisa Binária. A estrutura pode ser tomada como - struct node { int data; struct node *left; struct node *right; }; A solução máxima que eu consegui encontrar com um amigo foi algo desse tipo - considere esta árvore binária...