当前位置: 首页 > news >正文

Leetcode 1223 LCA of Deepest TreeNode

题意,找到所有最深的叶子节点的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.lryc.cn/news/462799.html

相关文章:

  • C++从入门到起飞之——红黑树 全方位剖析!
  • Java基于SSM微信小程序物流仓库管理系统设计与实现(lw+数据库+讲解等)
  • [LeetCode] 733. 图像渲染
  • 智能EDA小白从0开始 —— DAY23 PyAether深度解析与技术展望
  • 从深海探测到海洋强国:数字孪生助力海洋装备跨越式发展
  • 架构师备考-背诵精华(系统质量属性)
  • Pycharm下载安装教程(详细步骤)+汉化设置教程
  • 网络安全入门
  • 你真的了解Canvas吗--解密十【ZRender篇】
  • mac安装brew时踩坑解决方案
  • 基于Handsontable.js + Excel.js实现表格预览和导出功能(公式渲染)
  • 重学SpringBoot3-集成Redis(十三)之点排行榜实现
  • Java 中方法参数传递的陷阱
  • 哪家云电脑便宜又好用?ToDesk云电脑、顺网云、达龙云全方位评测
  • 【汇编语言】寄存器(内存访问)(三)—— 字的传送
  • 6 机器学习之应用现状
  • 相似度为 K 的字符串
  • [云] Project Analysis
  • 腾讯六宫格本地识别,本地模型识别,腾讯六图识别
  • Transformer图解以及相关的概念
  • Nginx缓存静态文件
  • 【隐私计算】隐语HEU同态加密算法解读
  • 用C#实现互斥操作
  • 【黑马点评优化】之使用Caffeine+Redis实现应用级二层缓存
  • CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)
  • 2.1.ReactOS系统中断描述符的格式KIDTENTRY结构体
  • 三、ElementPlus下拉搜索加弹窗组件的封装
  • androidStudio编译导致的同名.so文件冲突问题解决
  • 大学新生编程入门指南:如何选择编程语言与制定学习计划
  • SpringAI快速上手