如果面试字节跳动和腾讯,上来就是先撕算法,阿里就是会突然给你电话,而且不太在意是周末还是深夜,
别问我怎么知道的,想确认的可以亲自去试试。说到算法,直接力扣hard三百题也是可以的,但似乎会比较伤脑,
有没一些深入浅出系列呢,看了些经典的算法,发现其实很多算法是有框架的,今天就先说下很具代表的树
算法BFS和DFS,再来点秒杀题。
作者原创文章,谢绝一切转载,违者必究。
准备:
Idea2019.03/JDK11.0.4
难度: 新手--战士--老兵--大师
目标:
理解BFS和DFS框架
框架应用扩展
1 介绍BFS和DFS,即“广度优先”和“深度优先”,如下图二叉树前序BFS为 1-2-3-4-5 ,DFS为 1-2-4-5-3,本文中算法均以此树为例:
2 算法理解 2.1 DFS递归模式如下,这寥寥几行,即完成了二叉树先序、中序和后序遍历算法,这就是算法框架!
public static void dfs(Node root){ if (root == null){ return; } // 先序遍历位置 dfs(root.left); // 中序遍历位置 dfs(root.right); // 后序遍历位置 }