跳到主要内容

865.具有所有最深节点的最小子树

链接:865.具有所有最深节点的最小子树
难度:Medium
标签:树、深度优先搜索、广度优先搜索、哈希表、二叉树
简介:给定一个根为 root 的二叉树,每个节点的深度是 该节点到根的最短距离 。返回包含原始树中所有 最深节点 的 最小子树 。

题解 1 - cpp

  • 编辑时间:2023-09-06
  • 执行用时:8ms
  • 内存消耗:13.76MB
  • 编程语言:cpp
  • 解法介绍:dfs。
class Solution {
public:
TreeNode* subtreeWithAllDeepest(TreeNode* root) {
function<pair<int, TreeNode*>(TreeNode*, int)> dfs = [&](TreeNode *node, int level) -> pair<int, TreeNode*> {
pair<int, TreeNode*> res = make_pair(level, node);
if (node->left) {
res = dfs(node->left, level + 1);
}
if (node->right) {
auto rres = dfs(node->right, level + 1);
if (rres.first > res.first) res = rres;
else if (rres.first == res.first) res.second = node;
}
return res;
};
return dfs(root, 0).second;
}
};