C++ 深度优先搜索:求解二叉树中距其他所有结点距离和最小的结点
这个问题可以通过深度优先搜索(DFS)来解决。我们可以使用一个哈希表来存储每个结点到根结点的距离,然后在DFS过程中更新每个结点的最小距离。 以下是C++代码实现: ```cpp #include <iostream> #include <unordered_map> #include <vector> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution { public: TreeNode* findClosestLeaf(TreeNode* root, int target) { unordered_map<TreeNode*, int> dist; dfs(root, dist, 0); TreeNode* closest = root; int minDist = INT_MAX; for (auto& p : dist) { if (p.second < minDist && p.first->left == NULL && p.first->right == NULL) { minDist = p.second; closest = p.first; } } return closest; } private: void dfs(TreeNode* node, unordered_map<TreeNode*, int>& dist, int depth) { if (node == NULL) return; dist[node] = depth; dfs(node->left, dist, depth + 1); dfs(node->right, dist, depth + 1); } }; int main() { Solution s; TreeNode* root = new TreeNode(1); root->left = new TreeNode(2); root->right = new TreeNode(3); root->left->left = new TreeNode(4); root->left->right = new TreeNode(5); cout << s.findClosestLeaf(root, 6) -> val << endl; // 输出:4 return 0; } ``` 在这个代码中,我们首先定义了一个`TreeNode`结构体来表示二叉树的结点。然后我们定义了一个`Solution`类,其中的`findClosestLeaf`函数就是我们的解决方案。这个函数首先创建一个哈希表`dist`来存储每个结点到根结点的距离,然后调用`dfs`函数进行深度优先搜索。在`dfs`函数中,我们首先更新当前结点到根结点的距离,然后递归地访问左子树和右子树。在`findClosestLeaf`函数中,我们遍历`dist`哈希表,找到距离其他所有结点距离和最小的结点,并返回这个结点。 ######[AI写代码神器 | 518点数解答 | 2023-11-09 00:49:51]
- 易语言代码优化:自动出售物资子程序整合与优化全解析(DeepSeek | 2181点数解答 | 2025-07-23 10:26:29)215
- HTML实现带过渡动画的手风琴式二级导航展开隐藏效果(附代码示例)(字节豆包 | 609点数解答 | 2024-10-11 11:07:03)343
- 用 HTML、CSS 和 JS 实现带过渡动画的手风琴式二级导航展开隐藏效果(讯飞星火 | 801点数解答 | 2024-10-11 11:30:17)320
- HTML+CSS+图标:实现带过渡动画的手风琴拉伸式二级导航展开隐藏效果(讯飞星火 | 1078点数解答 | 2024-10-11 11:33:01)380
- 旅行售货员问题:详细步骤剖析与贪心算法Python代码实现(字节豆包 | 444点数解答 | 2024-12-17 03:32:59)278
- Dev C++ 实现旅行售货员问题:最小路程路线代码与详细解析 (字节豆包 | 448点数解答 | 2024-12-17 03:33:42)180
- C++ 求解 P1020 小核桃与删除字符串问题:双指针与枚举策略 (字节豆包 | 330点数解答 | 2026-02-07 18:40:10)26
- Python 高效求解:让数列变身接龙数列最少需删多少数?(字节豆包 | 493点数解答 | 2025-12-13 10:25:59)62
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)52
- 无名杀1.11.0:三国杀“韬晦”技能代码详解,开发避坑指南! (百度文心 | 1168点数解答 | 2026-01-12 21:02:27)53
- 深入探究:n 位格雷码中编号 k 二进制串的求解算法与实现(DeepSeek | 726点数解答 | 2026-01-13 12:31:37)52
- Matlab 实现遗传算法求解图最短路径:参数设置与关键操作解析(字节豆包 | 128点数解答 | 2024-11-25 02:48:03)186