算法学习笔记——DFS(树的遍历)和回溯
- DFS(深度优先搜索)
void track(TreeNode* root)
{
if(root==NULL)return;
root.do();//
for(TreeNode* child:root->child)
{
track(child);
}
root.cancel();//
}
特殊地,二叉树DFS
void track(TreeNode* root)
{
if(root==NULL)return;
root.do();
track(root->left);
track(root->right);
root.cancel();
}
- 回溯
void track(当前选择列表)
{
if(符合结束条件)return;
for(选项:选择列表)
{
选项.do();//
track(更新后选择列表);
选项.cancel();//
}
}