private: voiddfs(std::string& current_str, std::vector<std::string>& result, int n, int n_left, int n_right){ if (n_left == n && n_right == n) { result.push_back(current_str); return; } if (n_left < n_right) { return; }
if (n_left < n) { current_str += '('; dfs(current_str, result, n, n_left + 1, n_right); current_str.pop_back(); } if (n_right < n) { current_str += ')'; dfs(current_str, result, n, n_left, n_right + 1); current_str.pop_back(); } } };