aboutsummaryrefslogtreecommitdiff
path: root/works/solutions/leetcode/cpp/865.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-02-28 23:13:39 +0800
committerYuqian Yang <crupest@crupest.life>2025-02-28 23:13:39 +0800
commitdc1f0c4c0096013799416664894c5194dc7e1f52 (patch)
tree2f5d235f778cd720f4c39ec3e56b77ba6d99f375 /works/solutions/leetcode/cpp/865.cpp
parent7299d424d90b1effb6db69e3476ddd5af72eeba4 (diff)
downloadcrupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.gz
crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.tar.bz2
crupest-dc1f0c4c0096013799416664894c5194dc7e1f52.zip
chore(store): move everything to store.
Diffstat (limited to 'works/solutions/leetcode/cpp/865.cpp')
-rw-r--r--works/solutions/leetcode/cpp/865.cpp60
1 files changed, 0 insertions, 60 deletions
diff --git a/works/solutions/leetcode/cpp/865.cpp b/works/solutions/leetcode/cpp/865.cpp
deleted file mode 100644
index 8981a02..0000000
--- a/works/solutions/leetcode/cpp/865.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-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) {}
-};
-
-#include <unordered_set>
-
-class Solution
-{
-public:
- int max_depth = -1;
- std::unordered_set<TreeNode *> deepest_nodes;
-
- void record_depth(TreeNode *root, int depth)
- {
- if (depth > max_depth)
- {
- max_depth = depth;
- deepest_nodes.clear();
- }
-
- if (depth == max_depth)
- deepest_nodes.insert(root);
-
- if (root->left != nullptr)
- record_depth(root->left, depth + 1);
- if (root->right != nullptr)
- record_depth(root->right, depth + 1);
- }
-
- TreeNode *find_common_ancestor(TreeNode *root)
- {
- if (root == nullptr)
- return nullptr;
- if (deepest_nodes.find(root) != deepest_nodes.cend())
- return root;
-
- auto left = find_common_ancestor(root->left);
- auto right = find_common_ancestor(root->right);
-
- if (left != nullptr && right != nullptr)
- return root;
- if (left != nullptr)
- return left;
- if (right != nullptr)
- return right;
- return nullptr;
- }
-
- TreeNode *subtreeWithAllDeepest(TreeNode *root)
- {
- record_depth(root, 0);
- return find_common_ancestor(root);
- }
-};