Generate Parentheses (Call Stack)

Can someone please explain me the logic behind the backtracking. I know that no. of opening brackets are always >= closing brackets, but how this is happening during backtracking when the function is popped out from call stack.

see if the funtion is completed and popped out from stack the the function cant do anything. and this is not a question of backtracking

it is only using recursion and building logics , and there is no use of backtracking here.
problems like nqueen , nknight use backtracking because we try all possible paths and have to return back and then try another possible paths , bu there the question goes like treebuilding