2023-09-06 LeetCode每日一题(最深叶节点的最近公共祖先)

2023-09-06每日一题

一、题目编号

1123. 最深叶节点的最近公共祖先

二、题目链接

点击跳转到题目位置

三、题目描述

给你一个有根节点 root 的二叉树,返回它 最深的叶节点的最近公共祖先 。

回想一下:

  • 叶节点 是二叉树中没有子节点的节点
  • 树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 d+1
  • 如果我们假定 A 是一组节点 S 的 最近公共祖先,S 中的每个节点都在以 A 为根节点的子树中,且 A 的深度达到此条件下可能的最大值。

示例 1:
2023-09-06 LeetCode每日一题(最深叶节点的最近公共祖先)_第1张图片
示例 2:
2023-09-06 LeetCode每日一题(最深叶节点的最近公共祖先)_第2张图片

示例 3:
在这里插入图片描述

四、解题代码

class Solution {
public:
    pair<TreeNode*, int> f(TreeNode* root) {
        if (!root) {
            return {root, 0};
        }

        auto left = f(root->left);
        auto right = f(root->right);

        if (left.second > right.second) {
            return {left.first, left.second + 1};
        }
        if (left.second < right.second) {
            return {right.first, right.second + 1};
        }
        return {root, left.second + 1};

    }

    TreeNode* lcaDeepestLeaves(TreeNode* root) {
        return f(root).first;
    }
};



五、解题思路

(1) 使用递归来解决问题。

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)