酷代码 AI
菜单
服务商

作为c++开发,给定二叉树,假设相连接的两结点间距离为1,求所有结点中距离其他所有结点距离和最小的结点。

这个问题可以通过深度优先搜索(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`哈希表,找到距离其他所有结点距离和最小的结点,并返回这个结点。 [2023-11-09 00:49:51 | AI写代码神器 | 518点数解答]

相关提问
请收藏新域名:pdcd.cn
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]