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

访问中国建设银行官方网站郑州正规网站设计价格

访问中国建设银行官方网站,郑州正规网站设计价格,通信管理局网站 备案,店铺首页设计想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包… 想要精通算法和SQL的成长之路 - 验证二叉搜索树和不同的二叉搜索树 前言一. 验证二叉搜索树二. 不同的二叉搜索树三. 不同的二叉搜索树II 前言 想要精通算法和SQL的成长之路 - 系列导航 二叉搜索树的定义 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 一. 验证二叉搜索树 原题链接 思路 树的中序遍历左节点 -- 父节点 -- 右节点。我们按照中序遍历二叉树比较节点的大小即可。可以用一个全局的临时变量来存储上一个节点的值。 代码如下 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); }二. 不同的二叉搜索树 原题链接 思路如下 我们假设dp[i] 是以 i 个数字组合而成的不同二叉搜索树的个数。f(i) 代表以数字 i 为根节点的二叉搜索树个数。那么此时左节点的节点数量为 i - 1右节点的节点数量为 n - i 。那么左侧节点可组成的不同二叉树个数为dp[i-1]右侧为dp[n-i]。即 f(i) dp[i-1] * dp[n-i] 。而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 作为根节点构建二叉搜索树的时候数量有多少 我们假设一个函数buildTree(int left , int right) 是用来统计区间[left,right]范围内不同的二叉搜索树集合。 那么当以数字 i 作为根节点的时候左侧区间可拿到的集合为buildTree(left, i -1 )右侧为buildTree(i1,right)。拿到这两个左右集合之后我们遍历他们两两结合以数字 i 作为根节点构建二叉搜索树。 不难得出代码 public ListTreeNode buildTree(int left, int right) {ArrayListTreeNode 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 作为二叉搜索树的根节点那么左侧区间可构建的二叉搜索树的数量为ListTreeNode leftBSTNum buildTree(left, i - 1);ListTreeNode 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 ListTreeNode generateTrees(int n) {ArrayListTreeNode res new ArrayList();// 特殊值判断if (n 0) {return res;}return buildTree(1, n); }public ListTreeNode buildTree(int left, int right) {ArrayListTreeNode 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 作为二叉搜索树的根节点那么左侧区间可构建的二叉搜索树的数量为ListTreeNode leftBSTNum buildTree(left, i - 1);ListTreeNode 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://www.w-s-a.com/news/929631/

相关文章:

  • 中国专利申请网官网杭州seo优化
  • 杭州低价做网站网站系统功能流程图
  • 档案室建设网站名贵中药材初加工平台
  • 怎么做优惠券的网站wordpress加载速度
  • 手机网站 分辨率如何创建网站挣钱
  • 网站建设工作标准做模版网站
  • 免费注册微信网站怎样做天猫网站视频
  • 青海建设厅网站通知wordpress如何改文章id
  • 国外搜索网站建设支付网站备案
  • 合肥建站公司有哪家招聘的拼车平台网站开发
  • 网站 备案 固话北京建站模板企业
  • 网站开发的公司wordpress分类目录 模版
  • flashfxp怎么上传对应网站空间wordpress无法创建
  • 建设网站案例分析做网站代理怎么赚钱
  • 唯品会网站建设特色域名备案期间 网站访问
  • 郑东新区建设局网站怎么做万网网站
  • 阿里云上传的网站 服务器路径试用网站开发
  • 做美食原创视频网站网站开发要多钱
  • 怎么做网站作业哪个网站可兼职做logo
  • asp网站搭建教程做网站备案完成之后需要干什么
  • 无锡外贸网站开发兰州网站在哪备案
  • 广州百度网站建设公司天津建设电工证查询网站
  • 网站建设与管理行业发展情况制作网页动态效果
  • wordpress 特色缩略图临沂seo全网营销
  • 隆昌市住房和城乡建设厅网站做网站用什么字体比较好
  • 惠州网站建设设计18款未成年禁用软件ap入口
  • 班级网站 建设目标如何做好网站建设内容的策划书
  • 网站建设与网页设计期末考试清博舆情系统
  • plone网站开发商城网站建设怎么收费
  • 旺旺号查询网站怎么做公司门户网站项目模版