标签:二叉树

数据结构与算法刷题之【树】篇

<p>汇总树与二叉树相关的数据结构与算法刷题笔记,讲解二叉树种类、遍历方式与递归分治思想,涵盖路径、深度、构造等经典题型并给出Java题解与思路分析。</p>

leetcode【二叉树—简单】二叉树递归遍历

<p>本文讲解二叉树的前序、中序、后序递归遍历,对应 LeetCode 144、94、145 三道题。文章给出节点定义与本地调试代码,分别说明三种遍历中访问根节点值的时机,并用递归方式简洁实现,帮助建立二叉树遍历的基础认知。</p>

leetcode【二叉树—简单】二叉树迭代遍历

<p>本文讲解用栈实现二叉树的迭代遍历。文章给出节点定义与调试代码,介绍前序遍历先入右后入左的技巧、中序遍历用指针配合栈一路向左再回退的写法,以及后序遍历取中右左序列再反转得到左右中的思路。</p>

leetcode【二叉树—简单】二叉树的统一迭代法

<p>本文介绍一种统一的二叉树迭代遍历写法,用同一套模板实现前、中、后序遍历。文章给出节点定义与调试代码,核心是在待访问节点后压入 null 作为标识,再按不同遍历顺序入栈,从而统一出栈取值的处理逻辑。</p>

leetcode【二叉树—中等】102.二叉树的层次遍历

<p>本文讲解 LeetCode 102 二叉树的层序遍历,要求逐层从左到右返回节点值。文章给出题目描述与调试代码,介绍借助队列记录每层节点数的 BFS 解法,以及通过深度变量与结果集合配合实现的 DFS 递归解法。</p>

leetcode【二叉树—简单】226.翻转二叉树

<p>本文记录 LeetCode 226 翻转二叉树的解法,要求交换每个节点的左右子树。文章给出题目描述与调试代码,介绍采用前序递归遍历,每访问一个节点就交换其左右孩子,再递归处理左右子树的实现方式,并附上相关背景趣闻。</p>

leetcode【二叉树—简单】101.对称二叉树

<p>本文讲解 LeetCode 101 对称二叉树,判断二叉树是否镜像对称。文章给出题目描述与调试代码,介绍递归比较左右外侧与内侧节点的解法,并用 flag 提前终止无意义比较,同时给出用队列成对出入节点的迭代实现。</p>

leetcode【二叉树—简单】104.二叉树的最大深度

<p>本文记录 LeetCode 104 二叉树的最大深度,求根节点到最远叶子节点的最长路径节点数。文章给出题目描述与调试代码,介绍递归取左右子树最大值加一的精简写法,以及借助队列层序遍历统计层数的迭代解法。</p>

leetcode【二叉树—简单】111.二叉树的最小深度

<p>本文记录 LeetCode 111 二叉树的最小深度,求根节点到最近叶子节点的最短路径节点数。文章给出题目描述与调试代码,强调叶子节点的判定,介绍对左右孩子为空的不同情况分别处理再取最小值的递归解法,避免误算单支子树。</p>

LeetCode 543. 二叉树的直径

<p>本文讲解 LeetCode 第 543 题「二叉树的直径」,求任意两节点间最长路径的边数。通过后序深度优先搜索,在递归过程中不断更新每个节点左右子树深度之和的最大值,时间复杂度 O(n),并附 Java 代码与图解。</p>

LeetCode 617. 合并二叉树

<p>本文讲解 LeetCode 第 617 题「合并二叉树」,将两棵树重叠节点值相加合并为新树。分别给出 DFS 递归与 BFS 队列两种实现,处理节点为空时直接返回另一子树,时间复杂度 O(min(m,n)),附完整 Java 代码。</p>