Jak znaleźć najniższego wspólnego przodka dwóch węzłów w dowolnym drzewie binarnym?

Drzewo binarne tutaj niekoniecznie musi być drzewem wyszukiwania binarnego. Strukturę można przyjąć jako - struct node { int data; struct node *left; struct node *right; }; Maksymalnym rozwiązaniem, które mogłem wymyślić z przyjacielem, było coś takiego - rozważ to drzewo binarne...