
fa_levelerteke(leaf(X),X).
fa_levelerteke(node(L,R),X) :-
  ( 
    fa_levelerteke(L,X)
  ;
    fa_levelerteke(R,X)
  ). 

fa_reszfaja(X,X) :- fae(X).
fa_reszfaja(node(R,L),X) :-
  fae(node(R,L)),
  (
    fa_reszfaja(R,X)
  ;
    fa_reszfaja(L,X)
  ).


fae(leaf(_)).
fae(node(X1, X2)) :- 
  fae(X1), fae(X2).


lista_prefixuma( [E|L1], [E|L2] ) :-
  lista_prefixuma(L1,L2).
lista_prefixuma(_, []).

fa_melysege(leaf(_), 0).
fa_melysege(node(L,R), M) :-
  fa_melysege(L,M1), 
  fa_melysege(R,M2),
  M is 1+max(M1,M2).
