Leetcode 1223 LCA of Deepest TreeNode

embedded/2024/10/18 15:29:20/

题意,找到所有最深的叶子节点的LCA
https://leetcode.com/problems/lowest-common-ancestor-of-deepest-leaves/description/

第一个想法是模块的想法, LCA +找到所有最深的叶子节点两两组合 可行,但是算法复杂度很高而且你先要从顶到下,再从下到顶再算一遍算法复杂度太高

第二个想法,利用后续位置进行计算,好处是,我在后续位置可以知道更多的信息,比如左右子树的深度信息此时是已知的。二叉树的分治算法本质上是一种后序遍历。
构造一个函数,这个函数能够返回一个lcaDeepestLeaves+以root为根的树的深度,如果左子树的深度 > 右子树的深度,我只需要返回左子树的答案,因为这意味着左边深度大,右边的叶子节点都被舍弃了,反之对右子树也成立
但是如果一样深,那我要返回root

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* lcaDeepestLeaves(TreeNode* root) {return dfs(root).second;}pair<int, TreeNode*> dfs(TreeNode* node) {if (!node) {return {0, nullptr};}auto left = dfs(node->left);auto right = dfs(node->right);if(left.first > right.first) {return {left.first + 1, left.second};} elseif (left.first < right.first) {return {right.first + 1, right.second};}return {left.first + 1, node};}};

http://www.ppmy.cn/embedded/128487.html

相关文章

2019年计算机网络408真题解析

第一题&#xff1a; 解析&#xff1a;OSI参考模型第5层完成的功能 首先&#xff0c;我们需要对OSI参考模型很熟悉&#xff1a;从下到上依次是&#xff1a;物理层-数据链路层-网络层- 运输层-会话层-表示层-应用层&#xff0c;由此可知&#xff0c;题目要问的是会话层的主要功能…

Facebook的全球影响力:跨文化交流与信息共享的前沿

引言 在数字化时代&#xff0c;社交媒体已成为全球沟通的重要平台。自2004年成立以来&#xff0c;Facebook迅速发展成为拥有超过20亿活跃用户的巨头。其强大的影响力使其成为跨文化交流与信息共享的前沿平台。 跨文化交流的促进 Facebook的多语言支持让来自不同文化背景的用户…

拉普拉斯:用“硬科技”解决行业核心痛点 先发优势突出获行业广泛认可

《金基研》森海/作者 杨起超 时风/编审 近年来&#xff0c;在全球低碳的产业政策引导和市场需求的双轮驱动下&#xff0c;光伏产业蓬勃发展&#xff0c;光伏电池片产量逐年上升。2022年至今&#xff0c;以TOPCon、XBC、HJT为代表的转换效率更高的新型高效电池片技术进入产业化进…

如何新建一个React Native的项目

要新建一个 React Native 项目&#xff0c;你可以使用 React Native 官方推荐的工具 React Native CLI 或者 Expo。两者的区别在于&#xff1a;React Native CLI 提供更多对原生代码的访问权限&#xff0c;适合构建复杂的应用&#xff1b;而 Expo 是一个开发工具链&#xff0c;…

关于(鉴定)专业性事实的审查

《民事诉讼法》第79条到82条、《民诉法司法解释》第121至123条、《证据规则》第79至84条&#xff0c;都是关于司法鉴定的规则&#xff0c;其核心含义有两层&#xff1a; 一是当事人可以对于专门性问题申请鉴定&#xff0c;但法院应当审查必要性与合理性&#xff0c;并要做好基…

模板变量与php变量对比做判断

${item.create_name}如何与php变量对比 在PHP中&#xff0c;您可以通过将字符串内嵌到双引号中来将模板变量 ${item.create_name} 与PHP变量进行对比。如果您有一个PHP变量 $phpVariable 并且想要检查它是否与 ${item.create_name} 相同&#xff0c;您可以使用 str_replace 函…

springboot+大数据+基于大数据技术的电影推荐系统【内含源码+文档+部署教程】

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…

Android13 添加运行时权限

在一些场景下&#xff0c;需要给app 添加运行时权限&#xff0c;这样就不需要在使用的时候再去点击授权。 直接上代码&#xff1a; --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.javab/services/core/java/com/android/server/pm…