DFS、回溯、BFS

DFS
1、DFS(深度优先搜索),“深度优先的含义”是优先往某一个方向搜索,其他未搜索到的在这个方向搜索到底后再返回一个一个的搜索。
2、类似一棵树的前序遍历
3、适合目标明确,以找到目标为主要目的的情况。

回溯

回溯与DFS的关系,和回溯问题的解法参考这

总的来说:DFS 是一个劲的往某一个方向搜索,而回溯算法是建立在 DFS 基础之上的,但不同的是在搜索过程中,达到结束条件后,恢复状态,回溯上一层,再次搜索。因此回溯算法与 DFS 的区别就是有无状态重置

再次理解
【回溯法是求问题的解,使用的是DFS(深度优先搜索)。在DFS的过程中发现不是问题的解,那么就开始回溯到上一层或者上一个节点。DFS是遍历整个搜索空间,而不管是否是问题的解。所以更觉得回溯法是DFS的一种应用,DFS更像是一种工具。】

BFS
1、BFS(广度优先搜索),具有层次搜索;
2、类似树的层序遍历
3、适合在不断扩大遍历范围时找到相对最优解的情况。

vector<vector<int>> levelOrder(TreeNode* root) {
	//1、初始化:一个队列queue<TreeNode*> q, 将root节点入队列
    queue<TreeNode*> q;
    q.push(root);
    //2、如果队列不空(每次判断的队列,其包含二叉树同一层节点),做如下操作:
    while(q.size())
    {
        int size=q.size();
        //...
        for(int i=0;i<size;i++)
        {
            ///3、弹出队列头,保存为node,将node的左右非空孩子加入队列
            TreeNode* rt=q.front();q.pop();
            //...
            if(rt->left) q.push(rt->left);
            if(rt->right) q.push(rt->right);
        }
    }
    //return ...
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值