深度优先搜索框架

深搜(Depth First Search)

相信各位蒻鸡们学到Depth First Search时是一脸懵逼吧

博主其实也弱爆了,这个框架希望能帮到你

//b[]是一个bool变量哦
void dfs(#$^%*^$&$#@!){
    if(终止条件){
        输出;
        return;
    }
    for(遍历所有选项){
        if(是否使用){//也就是b[i]==false 为哈?看好咯
            a[i]=当前选项x;//a[]你貌似知道
            b[x]=true;//标记
            dfs($#%&%*%$#$@%);
            b[x]=false;//释放
        }
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
深度优先搜索(DFS)是一种用于遍历或搜索图或树的算法。它从起始节点开始,沿着一条路径尽可能深地探索,直到无法继续或达到目标节点,然后回溯到前一节点,继续探索其他路径,直到遍历完所有节点或找到目标。以下是一个使用C++实现深度优先搜索二叉树的基本代码示例: ```cpp #include <iostream> #include <stack> using namespace std; // 二叉树节点定义 struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int value) : val(value), left(nullptr), right(nullptr) {} }; // 深度优先搜索函数 void DFS(TreeNode* root) { if (root == nullptr) { return; } stack<TreeNode*> s; s.push(root); while (!s.empty()) { TreeNode* current = s.top(); s.pop(); cout << current->val << " "; // 输出当前节点的值 if (current->right) { s.push(current->right); // 将右子节点压入栈中 } if (current->left) { s.push(current->left); // 将左子节点压入栈中 } } } int main() { // 构建二叉树 TreeNode* root = new TreeNode(1); root->left = new TreeNode(2); root->right = new TreeNode(3); root->left->left = new TreeNode(4); root->left->right = new TreeNode(5); root->right->left = new TreeNode(6); root->right->right = new TreeNode(7); cout << "深度优先搜索结果:"; DFS(root); // 执行深度优先搜索 return 0; } ``` 这个代码示例使用了一个栈来实现深度优先搜索。首先将根节点压入栈中,然后进入循环,每次从栈中弹出一个节点,并输出其值。然后将其右子节点压入栈中,再将其左子节点压入栈中。这样就可以按照深度优先的顺序遍历整个二叉树。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值