递归嘛
只有左括号比右括号数目多的时候才这一位才能是 () 否则只能是 (
注意也要保持 左右的数量都大于0 才可以添加
当到最后的时候左右都用完 res添加

import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 
     * @return string字符串ArrayList
     */
    public ArrayList<String> generateParenthesis (int n) {
        ArrayList<String> result = new ArrayList<>();
        backtrack("",n,n,result);
        return result;

    }

    private void backtrack(String string, int left, int right, List<String> result) {
        if(left == 0 && right ==0){
            result.add(string);
            return;
        }
        if(left == right){
            backtrack(string+'(',--left,right,result);
        }
        else{
            if(left >=1) backtrack(string+'(',left-1,right,result);
            if(right >=1) backtrack(string+')',left,right-1,result);
        }
    }
}