lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

1. 题目

 

2. 解法

 

当我们需要对一棵树进行层序遍历时,我们可以使用队列来记录遍历过程。具体实现步骤如下:

  1. 首先将根节点入队。
  2. 当队列不为空时,取出队首元素,将其值存入结果列表中。
  3. 如果该节点有左子节点,则将其左子节点入队。
  4. 如果该节点有右子节点,则将其右子节点入队。
  5. 重复步骤2-4,直到队列为空。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static List<List<Integer>> levelOrder(TreeNode root) {
 
    List<List<Integer>> ans = new ArrayList<>();
 
    if (root == null) {
        return ans;
    }
 
    Queue<TreeNode> queue = new LinkedList<>();
    queue.offer(root);
 
    while (!queue.isEmpty()) {
        int size = queue.size();
        List<Integer> levelTemp = new ArrayList<>();
        for (int i = 0; i < size; i++) {
            TreeNode temp = queue.poll();
            levelTemp.add(temp.val);
 
            if (temp.left != null) queue.offer(temp.left);
            if (temp.right != null) queue.offer(temp.right);
 
        }
        ans.add(levelTemp);
    }
    return ans;
}

  

3. 总结

 

 BFS 

BFS解答思路:一般会借助队列

  • BFS 是一种广度优先搜索算法,用于图的遍历和搜索。它从起点开始,逐层向外遍历,直到找到目标节点或遍历完整张图。
  • 在遍历的过程中,每个节点都会被访问一次且仅一次。BFS 通常使用队列来实现,每次将当前节点的所有邻居节点加入队列中,然后从队列头部取出一个节点作为下一次遍历的起点。
  • 这样可以保证每个节点都是按照距离从近到远的顺序被访问的

 

DFS

DFS 是深度优先搜索(Depth First Search)的缩写。它是一种连通图的遍历策略,从一个顶点开始,沿着一条路走到底,直到不能再走为止,然后回退到上一个节点,继续走其他路径。

DFS 可以用于解决许多计算机科学问题,例如在图中查找两个节点之间的路径,拓扑排序等。以下是一些 DFS 的经典应用 :

  1. 拓扑排序
  2. 有向无环图的遍历
  3. 无向图的连通性问题
  4. 二分图判定

BFS解答思路: 一般 使用 递归 和 栈

DFS 一般使用递归和栈来实现。在递归实现 DFS 的时候,似乎不需要使用任何栈。但是,深度优先搜索(DFS)可以使用栈来实现。其主要思路是,从起始节点开始,将其加入栈中,然后循环执行以下操作:从栈顶弹出一个节点。如果该节点是目标节点,则返回结果。否则,将该节点的未访问邻居节点加入栈中,并将这些节点标记为已访问

 

posted on   白露~  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-04-25 Dubbo源码分析(十)同步调用与异步调用
2021-04-25 Dubbo源码分析(九)负载均衡算法
2021-04-25 Dubbo源码分析(八)集群容错机制
2021-04-25 Dubbo源码分析(七)服务目录
2021-04-25 Dubbo源码分析(六)服务引用的具体流程
2021-04-25 Dubbo源码分析(五)服务暴露的具体流程(下)
2021-04-25 Dubbo源码分析(四)服务暴露的具体流程(上)
点击右上角即可分享
微信分享提示