当前位置: 首页 > news >正文

广东营销网站建设如何做网站外部链接

广东营销网站建设,如何做网站外部链接,月入百万的游戏代理,班玛网站建设阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 二叉树的问题首先我们要想想是否能用递归来解决,本题也不例外,而递归的关键是找到子问题。 我们首先来看看一棵最简单的树,也就是示例 1。这样的一棵树总共有六条路径&#xf…

阅读目录

    • 1. 题目
    • 2. 解题思路
    • 3. 代码实现

1. 题目

2. 解题思路

二叉树的问题首先我们要想想是否能用递归来解决,本题也不例外,而递归的关键是找到子问题。

我们首先来看看一棵最简单的树,也就是示例 1。这样的一棵树总共有六条路径,分别是:根节点、左节点-根节点、右节点-根节点、左节点、右节点、左节点-根节点-右节点,我们用一个大小为 6 的数组 rootSum 来分别表示这六条路径的路径和,那么所求的最大路径和即为 rootSum 的最大值。

需要注意,当某一个节点为空的时候,比如左节点为空,那么左节点-根节点路径和为根节点的值,左节点贡献值为 0。而单独左节点的路径不存在,路径和应该设置为一个极大的负值

接下来,我们再考虑一个更复杂的树,这棵树的根节点有左右两棵子树,每一棵子树都是类似上面示例 1 的一棵树。那么,我们可以很容易地得到左右子树的路径和数组 leftSumrightSum ,接下来,我们要做的就是如何根据这两个数组得到整棵树的路径和数组 rootSum

rootSum 仍然有 6 条路径,其中:

  • 只有一个根节点的路径,rootSum[0]=root->val
  • 左节点-根节点的路径,这时候由于左节点是一棵子树,所以,只有包含子树中根节点的路径才能继续和当前的根节点组成新的路径,也就是子树的前三条路径,然后我们取其中最大的一条即可,rootSum[1]=root->val + max(leftSum[0:3))
  • 右节点-根节点的路径,这个和上面的类似,rootSum[2]=root->val + max(rightSum[0:3))
  • 左节点,也即是单独左子树组成的最大路径,rootSum[3]=max(leftSum[0:6))
  • 右节点,也即是单独右子树组成的最大路径,rootSum[4]=max(rightSum[0:6))
  • 左节点-根节点-右节点,也就是左子树的路径包含左子树的根节点,右子树的路径包含右子树的根节点,rootSum[5]=max(leftSum[0:3))+ root->val + max(rightSum[0:3))

时间复杂度为 O ( n ) O(n) O(n) n n n 代表节点总数,每个节点都需要进行遍历一次,空间复杂度为 O ( n ) O(n) O(n),每个节点都需要存储 6 个状态值。

3. 代码实现

/*** Definition for a binary tree node.* 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) {}* };*/
class Solution {
public:vector<int> getNodePathSum(TreeNode* root) {int leftRootSum = 0, leftMaxSum = -10000;if (root->left != nullptr) {vector<int> leftSum = getNodePathSum(root->left);leftRootSum = *std::max_element(leftSum.begin(), leftSum.begin() + 3);leftMaxSum = *std::max_element(leftSum.begin(), leftSum.end());}int rightRootSum = 0, rightMaxSum = -10000;if (root->right != nullptr) {vector<int> rightSum = getNodePathSum(root->right);rightRootSum = *std::max_element(rightSum.begin(), rightSum.begin() + 3);rightMaxSum = *std::max_element(rightSum.begin(), rightSum.end());}vector<int> rootSum(6, 0);rootSum[0] = root->val;rootSum[1] = leftRootSum + root->val;rootSum[2] = rightRootSum + root->val;rootSum[3] = leftMaxSum;rootSum[4] = rightMaxSum;rootSum[5] = leftRootSum + root->val + rightRootSum;return rootSum;}int maxPathSum(TreeNode* root) {vector<int> sum = getNodePathSum(root);return *std::max_element(sum.begin(), sum.end());}
};
http://www.yayakq.cn/news/771865/

相关文章:

  • 域名申请网页制作网站建设安徽金鹏建设集团网站
  • 大连建站系统模板wordpress页面显示分类
  • 深圳餐饮网站建设网站制作工作流程
  • 玉树营销网站建设服务aso排名服务公司
  • 广州网站设计企业网站的建设方法
  • 为什么只有我的电脑看网站后台内容管理是乱码作品展示网站源码
  • 设计网站报价企业标识图片logo
  • 合肥做网站优化马云做网站最开始怎么盈利的
  • 北京设计网站的公司哪家好python做网站模板
  • 营销型网站有哪些类型网站中搜索关键词
  • 网站建设的背景音乐广州牌手表网站
  • 做网站和平台多少钱搜狗关键词优化软件
  • 关于当当网站建设方案网页制作与网站建设问答题
  • 网站开发后台数据怎么来游戏策划是做什么的
  • 多用户网站网页制作技术有哪些
  • 阿里云网站建设方案书网络教育平台登录入口
  • 外国人做的关于中国的视频网站p2p网站开发的流程图
  • 新建的网站如何做seo廊坊高端网站建设
  • 中国建设银行的网站色彩口碑营销的策略技巧
  • 软件开发 网站建设深圳梵高网站建设服务
  • wordpress资料分享网站群辉wordpress端口
  • 公司企业网站建设方案书云服务器怎么搭建
  • 网站怎么加关键词深圳市建设工程资料网站
  • dede网站源码做网站公司q房网
  • 网站推广连接怎么做的网站建设维护与推广
  • 成品网站短视频源码搭建网站刷链接怎么做的
  • 做网站湖州做网站如何备案
  • 合肥网站推广 公司湖北省住房和建设厅官方网站
  • 无锡谁做网站好pHP可以做论坛网站吗
  • 北京中小企业网站建设上海高端网站定制