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

网站建设费无形资产摊销申请域网站

网站建设费无形资产摊销,申请域网站,做的好的手机网站,如何对上传的网站做代码修改修剪二叉搜索树 题目详细:LeetCode.669 做这道题之前建议先看视频讲解,没有想象中那么复杂:代码随想录—修剪二叉搜索树 由题可知,需要删除节点值不在区间内的节点,所以可以得到三种情况: 情况一&#…

修剪二叉搜索树

题目详细:LeetCode.669

做这道题之前建议先看视频讲解,没有想象中那么复杂:代码随想录—修剪二叉搜索树

由题可知,需要删除节点值不在区间内的节点,所以可以得到三种情况:

  • 情况一:root.val < low
  • 情况二:root.val > high
  • 情况三:low < root.val < high
  • 当节点满足情况一和情况二的条件时,删除该节点

但被删除节点的子树可能存在值在区间内的节点,利用二叉搜索树的特点可得:

  • 情况一:root.val < low,root左子树上的节点值都比root.val小,右子树上的节点值都比root.val大,所以满足区间的节点只会在右子树上出现,递归修剪其右子树并返回新的子节点
  • 情况二:root.val > high,root左子树上的节点值都比root.val小,右子树上的节点值都比root.val大,所以满足区间的节点只会在左子树上出现,递归修剪其左子树并返回新的子节点
  • 情况三:low < root.val < high,说明当前节点不需要被删除,递归修剪其左右子树,返回修剪好的二叉搜索树的新的根节点

Java解法(递归):

class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if(null == root) return null;// 根据二叉搜索树的特点可知if(root.val < low){// 删除节点的右子树中可能存在值在区间内的节点// 返回修剪好的右子树的新的子节点return trimBST(root.right, low, high);}else if(root.val > high){// 删除节点的左子树中可能存在值在区间内的节点// 返回修剪好的左子树的新的子节点return trimBST(root.left, low, high);}// else if(root.val > low && root.val < high)// 递归修剪左右子树root.left = trimBST(root.left, low, high);root.right = trimBST(root.right, low, high);// 返回修剪好的二叉搜索树的新的根节点return root;}
}

将有序数组转换为二叉搜索树

题目详细:LeetCode.108

由题可知:

  • 数组中的元素是有序排序的
  • 转换的结果是为一棵高度平衡的二叉搜索树

要想使结果的二叉树高度平衡:

  • 我们可以找中间值,根据中间值的下标将数组分为长度相近的两个子数组
  • 利用数组有序的特点,其划分后的子数组依旧是有序的
    • 左边的数值较小 < 中间值,右边的数值 > 中间值
  • 所以我们可以将中间值作为根节点,左边的数值作为左子树的节点,右边的数值作为右子树的节点
  • 采用递归,按照以上的逻辑不断划分数组和子树,当nums无法再分时,将空节点或节点返回给上一层接收,决定了节点的位置
  • 最后返回转换完成的二叉搜索树的根节点

Java解法(递归):

class Solution {public TreeNode sortedArrayToBST(int[] nums) {if(nums.length == 0) return null;else if(nums.length == 1) return new TreeNode(nums[0]);// 计算中间值的位置,并划分构建左右子树的子数组int mid = nums.length / 2;int[] left_nums = Arrays.copyOfRange(nums, 0, mid);int[] right_nums = Arrays.copyOfRange(nums, mid+1, nums.length);// 最中间的数值作为树的根节点,递归构建左右子树TreeNode root = new TreeNode(nums[mid]);root.left = sortedArrayToBST(left_nums);root.right = sortedArrayToBST(right_nums);// 返回构建完成的二叉搜索树的根节点return root;}
}

把二叉搜索树转换为累加树

题目详细:LeetCode.538

做这道题之前建议先看视频讲解,没有想象中那么复杂:代码随想录—把二叉搜索树转换为累加树

Java解法(递归,双指针法):

class Solution {int pre = 0;public TreeNode convertBST(TreeNode root) {this.inorder(root);return root;}public void inorder(TreeNode cur){if(null == cur) return;inorder(cur.right);cur.val += this.pre;this.pre = cur.val;inorder(cur.left);}
}

http://www.yayakq.cn/news/422946/

相关文章:

  • 做企业网站需要收费吗网页设计实训报告实训内容
  • 商业网站设计的基本原则巩固网站访客量
  • 在线制作网站源码网页传奇游戏托套路
  • 连云港建设工程安全网站无锡个人网站制作
  • wordpress导购站主题网站长尾关键词排名软件
  • 360浏览器怎么加入可信站点某学校网站建设方案
  • 网站建设正版软件WordPress文章生成图片
  • 河北软件开发网站建设东莞创意网站设计效果图
  • 可以做h5游戏的网站邢台网站设计
  • 站长素材免费下载成都公园城市建设局网站
  • 临沂专业做网站公司湘潭网站定制
  • 肥城网站建设价格重庆网站建设技术支持
  • 人与狗做的网站谁有济南最新防疫政策调整
  • 手机摄影网站创作者计划
  • 做外文翻译的网站龙岩做网站公司在哪里
  • 微信公众号的h5网站开发手机不想访问指定网站怎么做
  • 在线购物网站功能模块家装网上怎么接单啊
  • 选择手机网站建设做网站第一步
  • 做医疗类网站有什么需要审核的江都建设集团有限公司官方网站
  • python 微信网站开发德州天元建设集团有限公司
  • 企业网站建设意义生产企业网站模板
  • 网站建设合同附件明细商务类网站
  • 兴义网站制作怎么免费创建自己的网站平台
  • 10个网站 云主机需求泰州网站建设解决方案
  • 侨联网站建设重庆安全建设工程信息网
  • 大连零基础网站建设培训班黔江网站建设
  • 徐州品牌网站建设|徐州网站优化|徐州网络公司-徐州启思信息科技深圳宝安区属于富人区吗
  • 新网站建设脑图百度做网站怎么联系
  • 做有关兼职网站的需求分析网络营销相关理论
  • 做百度推广网站得多少钱网店运营教学