No.22 括号生成
22. - 力扣(LeetCode) (leetcode-cn.com)
根据题意,构建一颗决策树,相当于遍历出所有符合题意的节点,一路走到底
问题等价于递归遍历一个二叉树(中序遍历),期间用一些条件进行剪枝
遍历到符合题意的节点时就返回
简单的递归即可,可以视为简单写法的回溯
package leetcode.com.backTrack; import java.util.ArrayList; import java.util.List; public class Num22 { int n; List<String> res = new ArrayList<>(); public static void main(String[] args) { Num22 tool = new Num22(); tool.generateParenthesis(3); for(String str: tool.res){ System.out.println(str); } } public List<String> generateParenthesis(int n){ this.n = n; backtrack(new StringBuffer(""), 0, 0); return res; } public void backtrack(StringBuffer curStr, int left, int right){ if(left==n && right==n){ res.add(curStr.toString()); return; } if(left >n || right > left) return; backtrack(curStr.append("("), left+1, right); backtrack(curStr.append(")"), left, right+1); } }

浙公网安备 33010602011771号