回溯类题目
解决一个回溯问题,实际上就是一个决策树的遍历过程。需要考虑三个问题
1、路径:就是已经做出的选择
2、选择列表:就是当前可以做出的选择
3、结束的条件:就是到达决策树底层,无法在做选择的条件。
算法框架:
1
2
3
4
5
6
7
8
9 result = []
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择/回溯
解决一个回溯问题,实际上就是一个决策树的遍历过程。需要考虑三个问题
1、路径:就是已经做出的选择
2、选择列表:就是当前可以做出的选择
3、结束的条件:就是到达决策树底层,无法在做选择的条件。
算法框架:
1
2
3
4
5
6
7
8
9 result = []
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择/回溯
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
给你一个整数 n ,请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。