1. NCFL ===> Here , if a input is given then there is no chance to deterministically know that which language will operate (actually all are DCFL particularly, but DCFL are not closed under union ).Hence , all of them will parallely operate , making their union a NCFL.
2. DCFL ===> Count a's and increment stack. If no b comes go to final state even if stack is not empty . If b comes then decrement the stack and go to final state only if stack is empty. No, non-determinism required. Hence , DCFL .