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

网页制作教程春考关键词排名优化教程

网页制作教程春考,关键词排名优化教程,北京公司地址,做网站编码前言 树型dp就是在树上做动态规划,能用到的思想和套路在之后进阶的树上图上算法里很重要。 一、内容 在树上做动态规划时,对于不同的可能性展开,大多需要递归函数返回多个不同的信息,所以在树型dp里需要用一个Info类包装所有需要的信息,不管当前递归函数用没用到,都要…

前言

树型dp就是在树上做动态规划,能用到的思想和套路在之后进阶的树上图上算法里很重要。

一、内容

在树上做动态规划时,对于不同的可能性展开,大多需要递归函数返回多个不同的信息,所以在树型dp里需要用一个Info类包装所有需要的信息,不管当前递归函数用没用到,都要更新所有的信息,并直接返回这个Info类。

二、题目

1.最大二叉搜索子树

这题需要VIP,等我有了之后再来写()

2.二叉搜索子树的最大键值和

class Solution {
public://所有需要的信息class Info{public:int Max;int Min;int sum;bool isBST;int maxBSTSum;Info(int a,int b,int c,bool d,int e){Max=a;Min=b;sum=c;isBST=d;maxBSTSum=e;}};int maxSumBST(TreeNode* root) {return f(root).maxBSTSum;}Info f(TreeNode* root){if(root==NULL){//空树键值和设置为0 -> 啥也不要return Info(INT_MIN,INT_MAX,0,true,0);}//讨论要x节点和不要x节点//要x节点时,需要满足左树、右树和加上x节点后都是二叉搜索树,以及整体累加和//不要X节点时,需要左树和右树的最大键值和//先去左右孩子收集信息Info left=f(root->left);Info right=f(root->right);//整合信息int Max=max(left.Max,max(right.Max,root->val));int Min=min(left.Min,min(right.Min,root->val));int sum=left.sum+right.sum+root->val;bool isBST=left.isBST&&right.isBST&&left.Max<root->val&&root->val<right.Min;int maxBSTSum=max(left.maxBSTSum,right.maxBSTSum);if(isBST){maxBSTSum=max(maxBSTSum,sum);}return Info(Max,Min,sum,isBST,maxBSTSum);}
};

树型dp的套路还是先分析可能性。对于来到的每个节点,可能当前节点不参与构成最大键值和,也可能当前节点参与构成键值和。对于不参与的情况,当前最大键值和就是左树和右树的最大键值和的最大值。对于参与的情况,首先需要保证左右树是二叉搜索树,且加上当前节点后也是二叉搜索树,在这个基础上,还需要左右树的整体累加和。而因为要判断加上当前节点是否是二叉搜索树,所以还需要左树的最大值和右树的最小值。

整合一下,Info类里就应该包含max,min,sum,bool类型的isBST以及最大键值和maxBSTsum这几个变量。

所以来到每个节点就先去左右孩子调递归收集信息,接着整合出当前节点的信息返回即可。

3.二叉树的直径

class Solution {
public:class Info{public:int diameter;int height;Info(int a,int b){diameter=a;height=b;}};int diameterOfBinaryTree(TreeNode* root) {return f(root).diameter;}Info f(TreeNode* root){if(root==NULL){return Info(0,0);}//讨论经过x节点和不经过x节点//不经过x节点时,需要左树和右树的直径//经过x节点时,需要左树和右树的最大深度Info left=f(root->left);Info right=f(root->right);int diameter=max(left.diameter,right.diameter);//不经过x节点时的直径int height=max(left.height,right.height)+1;diameter=max(diameter,left.height+right.height);//注意!!不加1!!return Info(diameter,height);}
};

这个题的可能性展开还是分成经过当前节点和不经过当前节点两种情况展开。

先整合需要的信息,对于经过当前节点的情况,那最大直径就是左树和右树的深度相加。对于不经过当前节点的情况,最大直径就是左树和右树的最大直径。

4.在二叉树中分配硬币

class Solution {
public:class Info{public:int cnt;int sum;int move;Info(int a,int b,int c){cnt=a;sum=b;move=c;}};int distributeCoins(TreeNode* root) {return dfs(root).move;}Info dfs(TreeNode* root){if(root==NULL){return Info(0,0,0);}//对于x节点,需要统计左树和右树走的步数,以及需要调配的数量Info left=dfs(root->left);Info right=dfs(root->right);int cnt=left.cnt+right.cnt+
http://www.cadmedia.cn/news/8058.html

相关文章:

  • 做宣传册网站网店推广方案范文
  • 济南公司网站建设价格百度网站下载安装
  • 佛山市官网网站建设企业域名网
  • 安徽网站建设产品介绍千锋教育课程
  • 专业建站公司联系方式南通关键词优化平台
  • 杭州网络营销网站百度关键词查询工具免费
  • 免费建站平台哪家好比百度好用的搜索软件手机版
  • 湖北手机网站制作销售平台排名
  • 网站建设方案书要写吗网站seo优化工具
  • 网站推广合同模板百度引擎搜索网址
  • 营销型网站设计报价怎么注册网站
  • 江门电商网站设计培训吸引人的营销标题
  • 沈阳专门做网站可以搜索任何网站的浏览器
  • 燕郊房价2023年最新房价走势seo外链增加
  • 做网站一般费用多少重庆排名优化整站优化
  • 绵阳top唯艺网站建设自助优化排名工具
  • 电商网站建设去迅法网网站的营销策略
  • 江苏省政府门户网站建设手机百度旧版本下载
  • 网站建设搭配竞价培训班
  • 门户网站模板下载企业网站营销实现方式
  • 办公司流程和费用正规seo一般多少钱
  • 建设网站需要注意什么问题公司官网优化方案
  • 网络营销策划案怎么写湖南seo网站策划
  • 普通网站建设计入什么科目最有效的15个营销方法
  • 中小学网站建设论文什么是百度指数
  • 茂名网站建设哪家好seo怎么做新手入门
  • 外链代发工具站长工具seo排名查询
  • 网站开发的基本技术路线优化设计五年级上册语文答案
  • 公司网站如何做水印竞价推广什么意思
  • 网站建设与运营固定资产保定seo推广公司