




资源介绍
视频数量:10个
总时长:40分
课程介绍:
Java算法实战:树与图LeetCode刷题精讲
做过LeetCode的人都知道,树和图这两类题目是面试中最让人又爱又恨的存在。爱的是它们套路性强,一旦掌握就能横扫一大片;恨的是题目变化多,从基础的遍历到高级的算法,一个比一个烧脑。这门课就是来解决这个问题的——用Java语言,把树和图的核心题型一网打尽。
课程一共十个章节,总时长虽然只有四十分钟左右,但每一节都聚焦一个具体主题,用LeetCode原题作为练习材料,讲完理论马上动手写代码。
一、二叉树基础:
学树,首先得搞清楚最基本的概念。第一章从二叉树的节点定义开始,讲解插入操作、计算树的高度、统计节点总数和叶子节点数。然后是树的直径判断、两棵树的等价性比较、镜像翻转、以及平衡性的验证。这些题目虽然看起来基础,但都是后续复杂问题的基石。比如平衡性的概念,直接关系到后面AVL树和红黑树的理解。如果树失去平衡,就会退化成链表,搜索效率从对数级跌回线性级,这一点在面试中经常被追问。
二、二叉树遍历:
遍历是树类问题的核心操作。第二章系统梳理了四种主要遍历方式:前序、中序、后序的递归和迭代实现,以及层序遍历。每个遍历都给出两种写法——递归版本简洁直观,迭代版本则用栈或队列手动模拟,避免栈溢出的隐患。除此之外,课程还涵盖了锯齿形层序遍历、边界遍历、垂直遍历、俯视图、仰视图、左右侧视图等变体题型,这些都是面试中常考的"花式遍历"。中序遍历配合BST能天然输出有序序列,这一点在迭代实现里用"左到底"策略就能优雅解决。
三、二叉搜索树:
BST是二叉树最重要的特例。第三章从插入、删除、查找这些基本操作讲起,再扩展到Kth最小元素查找、查找最近公共祖先、有序数组转平衡BST、向上向下取整、以及BST的合法性验证。最后还包含了一道经典的两数之和题目。整个章节的设计思路是:先打基础,再逐步深入到必须利用BST特性才能高效解决的复杂问题。判断一棵树的合法性,很多人会忽略递归过程中上下界的传递,课程里会重点强调这个细节。
四、树的进阶题目:
第四章开始上难度。包括二叉树中的最近公共祖先、最大路径和、树的序列化与反序列化、根据中序和前序或后序遍历构造二叉树、对称树判断、填充右指针、根到叶子的数字之和、二叉树摄像头、以及分发硬币问题。这些题目综合运用了递归、深度优先搜索和动态规划的思想,是面试中的高频难题。序列化与反序列化那题尤其值得反复练习,它考的是你对遍历顺序和重构逻辑的深度理解。
五、字典树:
Trie是一种专门处理字符串的树形数据结构。第五章从Trie的基本实现讲起,包括插入、查找、前缀匹配。然后通过十个真实问题来巩固:词典中最长单词、单词搜索II、统计不同子串、两个数的最大异或、词根替换、设计可添加和搜索的数据结构、回文对、自动补全功能、以及最短唯一前缀。学完这一章,你会对Trie在字符串处理中的威力有深刻理解,也能明白为什么搜索引擎的联想功能背后离不开这棵树。
六、图的表示与基础遍历:
图的部分从最基础的开始。第六章先讲图的两种表示方式:邻接表和邻接矩阵,它们各自的适用场景完全不同。稀疏图用邻接表节省内存,密集图用邻接矩阵换来常数时间的边查找。然后是BFS和DFS遍历的实现细节,包括有向图和无向图中环的检测、二分图判定、连通分量统计、图的克隆、以及经典的岛屿数量问题。
七、图的遍历应用:
第七章把BFS和DFS的应用场景铺开来讲。拓扑排序是重中之重,分别用DFS和Kahn算法实现。课程安排问题、单词接龙、洪水填充、腐烂的橘子、多源BFS求解01矩阵、省份数量、被围绕的区域、以及太平洋大西洋水流问题,这些都是LeetCode上的经典题目,每一道都对应着一种图论思维模式。多源BFS的思路在腐烂橘子这类题目里特别能体现,用队列同时压入多个起点,就能高效模拟扩散过程。
八、最短路径算法:
第八章聚焦图论中的经典算法。Dijkstra、Bellman-Ford、Floyd-Warshall是必须会的三大最短路径算法。课程用二进制矩阵中的最短路径、K站内的最便宜航班、网络延迟时间、最小体力消耗路径、加权DAG中的最短路径、涨水游泳等实际题目来演示这些算法的应用场景。每个算法的适用条件和复杂度差异讲得很清楚,避免你在面试时选错方法。
九、并查集:
并查集是处理连通性问题的利器。第九章从数据结构本身的实现讲起,用路径压缩和按秩合并来保证接近常数时间的操作效率。然后用它来解决连通分量统计、图中环的检测、Kruskal和Prim两种最小生成树算法、账户合并、冗余连接、岛屿数量II、等式方程可满足性判断、以及最小可交换字符串等问题。
十、高级图论问题:
最后一章挑战高难度题目。包括网络中的关键连接(桥)、关节点、有向图的强连通分量(Kosaraju和Tarjan两种算法)、旅行商问题、带约束的最小生成树、外星字典问题、行程重建、图着色问题、以及公交路线问题。每一道都是大厂面试中可能出现的压轴题。Kosaraju和Tarjan算法的两种强连通分量解法各有千秋,理解它们的内在联系比单纯背诵模板更重要。
适合谁学:
如果你是计算机专业的学生,正在准备算法面试;如果你有Java语言基础,但树和图类题目一直写不明白;或者你想系统提升算法能力,用LeetCode来检验学习成果——这门课都能帮到你。建议学习时配合LeetCode原题一起练习,理论加实战效果最佳。
学完这门课,你会对树和图的LeetCode高频题型建立一个完整的认知框架,从最基础的遍历到最复杂的图论算法,都能找到对应的解题套路。面试时遇到相关题目,不再需要临时抱佛脚刷题解,而能从知识体系里自然调出解法思路。