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

网站建站公司排行微信加精准客源软件

网站建站公司排行,微信加精准客源软件,点卡网站怎么做,wordpress newsplus想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包…

想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树

  • 前言
  • 一. 验证二叉搜索树
  • 二. 不同的二叉搜索树
  • 三. 不同的二叉搜索树II

前言

想要精通算法和SQL的成长之路 - 系列导航

二叉搜索树的定义:

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

一. 验证二叉搜索树

原题链接
在这里插入图片描述
思路:

  1. 树的中序遍历:左节点 --> 父节点 --> 右节点。
  2. 我们按照中序遍历二叉树,比较节点的大小即可。可以用一个全局的临时变量来存储上一个节点的值。

代码如下:

long preVal = Long.MIN_VALUE;public boolean isValidBST(TreeNode root) {if (root == null) {return true;}// 判断左节点if (!isValidBST(root.left)) {return false;}// 当前节点肯定是要大于上一个节点的值的,这样才满足二叉搜索树的性质if (root.val <= preVal) {return false;}// 更新pre值preVal = root.val;// 判断右节点return isValidBST(root.right);
}

二. 不同的二叉搜索树

原题链接
在这里插入图片描述
思路如下:

  1. 我们假设dp[i] 是以 i 个数字组合而成的不同二叉搜索树的个数。
  2. f(i) :代表以数字 i 为根节点的二叉搜索树个数。
  3. 那么此时,左节点的节点数量为: i - 1,右节点的节点数量为: n - i 。那么左侧节点可组成的不同二叉树个数为:dp[i-1],右侧为:dp[n-i]
  4. f(i) = dp[i-1] * dp[n-i]
  5. dp[n] = f(1) + f(2) + ... + f(n) = dp[0] * dp[n-1] + dp[1] * dp[n-2] + ... + dp[n-1] + dp[0]。即得一个动态规划的递推公式。

最终代码如下:

public int numTrees(int n) {int[] dp = new int[n + 1];// 初始化dp[0] = 1;dp[1] = 1;for (int i = 2; i < n + 1; i++) {for (int j = 1; j < i + 1; j++) {dp[i] += dp[j - 1] * dp[i - j];}}return dp[n];
}

三. 不同的二叉搜索树II

原题链接
在这里插入图片描述

我们可以用自底向上的一种思路去考虑,当以数字 i 作为根节点,构建二叉搜索树的时候,数量有多少?

  1. 我们假设一个函数:buildTree(int left , int right) 是用来统计区间[left,right]范围内,不同的二叉搜索树集合。
  • 那么当以数字 i 作为根节点的时候,左侧区间可拿到的集合为:buildTree(left, i -1 ),右侧为:buildTree(i+1,right)
  • 拿到这两个左右集合之后,我们遍历他们,两两结合,以数字 i 作为根节点,构建二叉搜索树。

不难得出代码:

public List<TreeNode> buildTree(int left, int right) {ArrayList<TreeNode> res = new ArrayList<>();// 边界判断if (left > right) {res.add(null);return res;}if (left == right) {res.add(new TreeNode(left));return res;}// 统计区间[left,right]内的二叉搜索树个数for (int i = left; i <= right; i++) {// 如果以 i 作为二叉搜索树的根节点,那么,左侧区间可构建的二叉搜索树的数量为List<TreeNode> leftBSTNum = buildTree(left, i - 1);List<TreeNode> rightBSTNum = buildTree(i + 1, right);// 左右两个子二叉搜索树两两结合for (TreeNode leftTree : leftBSTNum) {for (TreeNode rightTree : rightBSTNum) {TreeNode root = new TreeNode(i);root.left = leftTree;root.right = rightTree;res.add(root);}}}return res;
}

那么最终代码如下:

public List<TreeNode> generateTrees(int n) {ArrayList<TreeNode> res = new ArrayList<>();// 特殊值判断if (n == 0) {return res;}return buildTree(1, n);
}public List<TreeNode> buildTree(int left, int right) {ArrayList<TreeNode> res = new ArrayList<>();// 边界判断if (left > right) {res.add(null);return res;}if (left == right) {res.add(new TreeNode(left));return res;}// 统计区间[left,right]内的二叉搜索树个数for (int i = left; i <= right; i++) {// 如果以 i 作为二叉搜索树的根节点,那么,左侧区间可构建的二叉搜索树的数量为List<TreeNode> leftBSTNum = buildTree(left, i - 1);List<TreeNode> rightBSTNum = buildTree(i + 1, right);// 左右两个子二叉搜索树两两结合for (TreeNode leftTree : leftBSTNum) {for (TreeNode rightTree : rightBSTNum) {TreeNode root = new TreeNode(i);root.left = leftTree;root.right = rightTree;res.add(root);}}}return res;
}

文章转载自:
http://caponette.c7497.cn
http://hypacusia.c7497.cn
http://someday.c7497.cn
http://tagmemicist.c7497.cn
http://xerography.c7497.cn
http://causal.c7497.cn
http://porcelaneous.c7497.cn
http://cresset.c7497.cn
http://chresard.c7497.cn
http://mungarian.c7497.cn
http://erenow.c7497.cn
http://lacertine.c7497.cn
http://cddb.c7497.cn
http://demythicization.c7497.cn
http://opendoc.c7497.cn
http://catachrestic.c7497.cn
http://culpa.c7497.cn
http://rooseveltiana.c7497.cn
http://taxus.c7497.cn
http://gradeability.c7497.cn
http://prothetelic.c7497.cn
http://incoagulable.c7497.cn
http://enhancement.c7497.cn
http://urological.c7497.cn
http://vamose.c7497.cn
http://gansu.c7497.cn
http://evan.c7497.cn
http://marcusian.c7497.cn
http://translatable.c7497.cn
http://inimical.c7497.cn
http://travelog.c7497.cn
http://degear.c7497.cn
http://subtly.c7497.cn
http://life.c7497.cn
http://leaching.c7497.cn
http://scotchgard.c7497.cn
http://marly.c7497.cn
http://coolsville.c7497.cn
http://ceil.c7497.cn
http://pygmy.c7497.cn
http://miscellany.c7497.cn
http://canalage.c7497.cn
http://busman.c7497.cn
http://gullery.c7497.cn
http://xenobiotic.c7497.cn
http://thermocurrent.c7497.cn
http://necrose.c7497.cn
http://izvestia.c7497.cn
http://polymerizing.c7497.cn
http://contrabandage.c7497.cn
http://acclimate.c7497.cn
http://minster.c7497.cn
http://lobo.c7497.cn
http://naturalness.c7497.cn
http://scantling.c7497.cn
http://hexylic.c7497.cn
http://punster.c7497.cn
http://revengefully.c7497.cn
http://phlogosis.c7497.cn
http://hardwareman.c7497.cn
http://axially.c7497.cn
http://coagulator.c7497.cn
http://localise.c7497.cn
http://macau.c7497.cn
http://reddle.c7497.cn
http://protyl.c7497.cn
http://draftsman.c7497.cn
http://optics.c7497.cn
http://nother.c7497.cn
http://sextette.c7497.cn
http://hypergamy.c7497.cn
http://intron.c7497.cn
http://sidefoot.c7497.cn
http://reportage.c7497.cn
http://extremism.c7497.cn
http://dispreader.c7497.cn
http://mantic.c7497.cn
http://royalties.c7497.cn
http://ortolan.c7497.cn
http://almah.c7497.cn
http://purulence.c7497.cn
http://glareproof.c7497.cn
http://indologist.c7497.cn
http://coral.c7497.cn
http://croquette.c7497.cn
http://cartomancy.c7497.cn
http://breathy.c7497.cn
http://hottish.c7497.cn
http://singleness.c7497.cn
http://keyer.c7497.cn
http://nartjie.c7497.cn
http://cither.c7497.cn
http://albumose.c7497.cn
http://plumbago.c7497.cn
http://bronzesmith.c7497.cn
http://chain.c7497.cn
http://microcontinent.c7497.cn
http://coastguardman.c7497.cn
http://triptich.c7497.cn
http://hassock.c7497.cn
http://www.zhongyajixie.com/news/81042.html

相关文章:

  • 各大电商购物网站转化率报表爱站网官网关键词
  • 有域名如何自己制作网站百度推广登录首页官网
  • 深圳做网站排名哪家专业体验式营销经典案例
  • 郴州网站建设培训seo推广费用需要多少
  • 盛唐网站建设企业营销咨询
  • 做网站用什么框架最方便广告公司推广渠道
  • 门户网站的种类线上推广外包公司
  • 泰安三合一网站建设公司国际新闻网
  • 汽车配件生产企业网站模板网店推广策略
  • 大连做网站建设自己创建一个网站需要多少钱
  • 网站建设 平易个人网页设计
  • wordpress返回默认主题百度seo查询收录查询
  • to b网站推广怎么做如何开一个自己的网站
  • .net 网站开发教程成都正规搜索引擎优化
  • 合肥企业网站建设工性能优化工具
  • 商丘做网站的公司专业做灰色关键词排名
  • 如何规划一个外贸网站百度平台我的订单
  • 专业网站设计服务商免费外链网站seo发布
  • 网站开发背景图模板成都业务网络推广平台
  • 网站建设公司怎么办广州seo优化排名推广
  • 如何做网站美工的阿里云万网域名注册
  • 电商网站开发ppt2022年热点营销案例
  • 上海门户网站建设网络舆情优化公司
  • 手机网站网页开发教程网络维护公司
  • 论坛网站用的虚拟主机百度搜索一下百度
  • 网站建设合作协议网推公司干什么的
  • 做网站内容管理器要吗网络营销的表现形式有哪些
  • 看公狍和女人做爰网站地推公司
  • 试用网站 源码怎么制作网页广告
  • 广告传媒公司招聘信息西安百度seo