[leetCode]Hot100系列.树部分总结

还是保持的每天2到3题,复习涉及到的就重新写一遍,树这部分大多还都是数据结构的理解,没什么算法的感觉,可以提前去简单看一下树这部分的基础知识,再上手.

-------------逐题思路+代码---------------------

思路:树的遍历都离不开递归,中序遍历就是 左根右 的顺序,然后递归出口就找到为null的就行,每次都把当前的节点加到结果集合里面

代码:

------------------------------------------------------------------------------------------------------

思路:

求深度就递归 出口就是叶子结点为null

很明显的思路就是递归,那么递归要返回什么是核心,

应该返回当前节点下面俩个节点各自的最大深度进行一个比较,然后再在这个最深的那个几点到基础上+1.

代码:

------------------------------------------------------------------------------------------------------

思路: 依旧是递归,要先递归左右节点,再进行当前节点左右的反转操作

代码:

------------------------------------------------------------------------------------------------------

思路:

遍历树需要递归+判断对称要用到两个指针pq让他俩同时对称着走,

递归左右节点的时候要注意

1.条件同时为空 与 其中一个空

2.递归调用自己的时候要让子节点对称进行(p.left,q.right)如此

代码:

------------------------------------------------------------------------------------------------------

思路: 这个和深度类似,当前节点左右两个深度和

二叉树直径-与求深度有关系-求最长 左深度+右深度

注意要return -1

代码:

------------------------------------------------------------------------------------------------------

思路:层序遍历要用队列辅助完成

用队列把每一层的放进去,出的时候把对应节点的左右加进来

每一次循环先判断大小

代码:

------------------------------------------------------------------------------------------------------

思路:

这里主要根据二叉搜索树的性质来实现

核心就是要保证根节点是数组中间的点就可.

然后递归构造左右子树.

代码:

------------------------------------------------------------------------------------------------------

思路:

递归的时候要根据二叉搜索树的性质来,要求的最小值和最大值作为参数传递进去,递归出口是为空的时候

代码:

------------------------------------------------------------------------------------------------------

思路:这个题的前置条件要掌握中序遍历,

解释一下,中序遍历结果为升序,然后这样第k个就是咱们要找的

每次都判断是不是k个

代码:

------------------------------------------------------------------------------------------------------

思路:这道题一眼思路是层序遍历,然后取最后一个放到结果集

代码:

------------------------------------------------------------------------------------------------------

思路:

这道题涉及到先序遍历, 然后第一次做的时候的疑惑点是我直接递归把节点指向改了会不会导致后面丢失一部分.

所以这部分应该先先序遍历放集合里面,再循环构建链表

代码:

------------------------------------------------------------------------------------------------------

思路:这道题涉及数据结构树的基本知识,大家可以去简单了解一下相关视频,这里简单来说就是根据中序遍历找到根节点,再根据前序遍历,构建左右

代码:

------------------------------------------------------------------------------------------------------

思路:这里可以类比求直径的思路,

1.递归每一个节点

2.根据每一个节点进行左右子节点总和进行判断

当前节点路径值等于目标的数目+左右子节点符合的数目

代码:

------------------------------------------------------------------------------------------------------

思路:

判断祖先要从qp指针往上走去找符合的

要把每个节点对应的父节点映射起来-->map

先递归,把映射的map填好

然后再根据qp两个节点,一直往上循环走,

把p路径上的经过的节点都放到set里,

再走q的时候,要是set集合里面有就说明是

代码:

------------------------------------------------------------------------------------------------------

思路:

这道题比较唬人,但是掌握最大价值(贡献值)这个概念就简单了,

递归看每一个节点,

先看左右节点的贡献值,只去大于0的

再计算以当前节点构建的最大路径和,本节点值+左右节点贡献值

与之前的res结果相比较,保留大的

然后递归返回这个节点的贡献值-->根节点值+左/右其中一个的贡献值

这里拿力扣官方题解图方便大家理解贡献值的概念

代码:

-----------------------------------------------------------------------------------------------

### LeetCode Hot 100 Problems 列表 LeetCode 的热门题目列表通常由社区投票选出,涵盖了各种难度级别的经典编程挑战。这些题目对于准备技术面试非常有帮助。以下是部分 LeetCode 热门 100 题目列表: #### 数组与字符串 1. **两数之和 (Two Sum)** 2. **三数之和 (3Sum)** 3. **无重复字符的最长子串 (Longest Substring Without Repeating Characters)** 4. **寻找两个正序数组的中位数 (Median of Two Sorted Arrays)** #### 动态规划 5. **爬楼梯 (Climbing Stairs)** 6. **不同的二叉搜索 (Unique Binary Search Trees)** 7. **最大子序列和 (Maximum Subarray)** #### 字符串处理 8. **有效的括号 (Valid Parentheses)** 9. **最小覆盖子串 (Minimum Window Substring)** 10. **字母异位词分组 (Group Anagrams)** #### 图论 11. **岛屿数量 (Number of Islands)** 12. **课程表 II (Course Schedule II)** #### 排序与查找 13. **最接近原点的 K 个点 (K Closest Points to Origin)** 14. **接雨水 (Trapping Rain Water)** 15. **最长连续序列 (Longest Consecutive Sequence)[^2]** #### 堆栈与队列 16. **每日温度 (Daily Temperatures)** 17. **滑动窗口最大值 (Sliding Window Maximum)** #### 结构 18. **验证二叉搜索 (Validate Binary Search Tree)** 19. **二叉的最大路径和 (Binary Tree Maximum Path Sum)** 20. **从前序与中序遍历序列构造二叉 (Construct Binary Tree from Preorder and Inorder Traversal)** #### 并查集 21. **冗余连接 II (Redundant Connection II)** #### 贪心算法 22. **跳跃游戏 (Jump Game)** 23. **分割等和子集 (Partition Equal Subset Sum)** #### 双指针技巧 24. **环形链表 II (Linked List Cycle II)[^1]** 25. **相交链表 (Intersection of Two Linked Lists)** #### 其他重要题目 26. **LRU缓存机制 (LRU Cache)** 27. **打家劫舍系列 (House Robber I & II)** 28. **编辑距离 (Edit Distance)** 29. **单词拆分 (Word Break)** 此列表并非官方发布版本而是基于社区反馈整理而成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值