void traverse(TreeNode root) {for (TreeNode child : root.childern)// 前序遍历需要的操作traverse(child);// 后序遍历需要的操作}


for 选择 in 选择列表:# 做选择将该选择从选择列表移除路径.add(选择)backtrack(路径, 选择列表)# 撤销选择路径.remove(选择)将该选择再加⼊选择列表

不管怎么优化,都符合回溯框架,而且时间复杂度都不
可能低于 。因为穷举整棵决策树是无法避免的。这也是回溯算法的⼀
个特点,不像动态规划存在重叠子问题可以优化,回溯算法就是纯暴力穷
举,复杂度⼀般都很高。
N 皇后问题
