No, non ancora. Innanzitutto nel caso di foglia puoi semplificare il return. Dicevo prima: non serve per forza un if .... hai l'espressione della condizione che è .... un boolean!
Nella parte finale, neanche. Va bene sfruttare quel a==null iniziale per poter invocare comunque verifica ricorsivamente. Ma se b è true, non restituisci al chiamante true!
E nella parte finale puoi comunque semplificare molto: quale è quell'operatore che verifica se almeno uno dei due operandi è true e se il primo è true NON valuta il secondo operando?