导航

回溯算法是什么?

我们把这种树形结构叫决策树

解决⼀个回溯问题,实际上就是⼀个决策树的遍历过程。

 

什么是路径,选择列表,结束条件?

[2] 就是「路径」,记录你已经做过的选 择; [1,3] 就是「选择列表」,表⽰你当前可以做出的选择;「结束条件」就是遍历到树的底层,在这⾥就是选择列表为空的时候。

 

前序遍历和后序遍历是什么?

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

两个时间点而已。

前序遍历的代码在进⼊某⼀个节点之前的那个时间点执⾏,后序遍历代码在 离开某个节点之后的那个时间点执⾏。

回溯算法核心:

其核⼼就是 for 循环⾥⾯的递归,在递归调⽤之前「做选择」,在递归调⽤之后「撤销选择」,特别简单。

 

 

前序遍历
中序遍历
后序遍历
区别根节点被访问的顺序。(一直左右)