【难】【分治法】【树】求树中长度最大的路径
来源:互联网 发布:显示二维码的数据 编辑:程序博客网 时间:2024/05/21 10:30
题目:EPI
//由于题目的特殊要求,不树的节点需要数据域//pair的first是孩子节点,second是距离class TreeNode{public:vector<pair<shared_ptr<TreeNode>, double>> edges;};//最大高度和最大直径pair<double,double> find_diameter_core(const shared_ptr<TreeNode> &root){if (root->edges.empty())return pair<double, double>(0, 0);//之所以要保留孩子节点的两个最大高度,是因为两个高度可以连成一条路径diameter//height的定义是,长度最大的一条路径(起点是根节点root,终点是它的某个后代叶子节点)double height[2] = { 0, 0 };double diameter = 0;for (int i = 0; i < root->edges.size(); i++){pair<shared_ptr<TreeNode>, double> e = root->edges[i];pair<double, double> re = find_diameter_core(e.first);if (re.first + e.second > height[0]){height[1] = height[0];height[0] = re.first + e.second;}else if (re.first + e.second > height[1])height[1] = re.first + e.second;diameter = max(diameter, re.second);}return pair<double, double>(height[0], max(diameter, height[0] + height[1]));}double find_diameter(const shared_ptr<TreeNode> &root){if (root == nullptr)return 0;return find_diameter_core(root).second;}
0 0
- 【难】【分治法】【树】求树中长度最大的路径
- 二叉树最大路径长度
- Linux 文件名和路径的最大长度
- poj 2114 树分治(是否存在长度恰为k的路径)
- 点分治:统计长度为K的路径条数
- windows最大路径长度
- 算法题15 二叉树的最长的路径长度&&最大路径和
- 二叉树的层次遍历(BFS),二叉树的所有路径,二叉树的最大路径和(分治)
- LintCode-分治-二叉树中的最大路径和
- 求一颗二叉树中叶子节点间最大的路径长度
- 分治法求数组的最大最小值
- 分治法求和最大的子数组
- 点分治:统计长度不大于K的路径条数
- 【jzoj4715】【树上路径】【树】【分治】【点分治】
- PING的最大长度
- URL 的最大长度
- Varchar的最大长度
- varchar2 的最大长度
- CSDN对我的记忆
- qsort 常用方法总结
- Leetcode NO.78 Subsets
- lua实现面向对象
- java vm 参数及设置(转载)
- 【难】【分治法】【树】求树中长度最大的路径
- python连接mysql之mysql-python安装
- HttpClient+AsyncTask开发App
- C的格式化输入输出
- mysql主从切换
- 脉动的直流电
- js实现在HTML页面获取项目名路径
- iOS后台任务
- Navicat for mySql update语句两个反斜杠(//)被过滤