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

注销主体备案与网站备案表个人工作室网站

注销主体备案与网站备案表,个人工作室网站,网页视频下载方法手机,女性时尚网站模板654.最大二叉树 力扣题目地址(opens new window) 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大…654.最大二叉树 力扣题目地址(opens new window) 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构建最大二叉树并且输出这个树的根节点。 示例 提示 给定的数组的大小在 [1, 1000] 之间。 思路 其实这个最大二叉树的定义和二叉搜索树非常像我们能想到的是先找到里面最大的节点将其放在根节点然后去它的左子树里面寻找接着去右子树里面寻找属于前序遍历。 确定递归函数参数以及返回值 public TreeNode constructMaximumBinaryTree1(int[] nums, int leftIndex, int rightIndex) 我们根据传入的数组和数组的起始结束节点来确定边界 确定终止条件 if (rightIndex - leftIndex 1) {// 没有元素了return null;}if (rightIndex - leftIndex 1) {// 只有一个元素return new TreeNode(nums[leftIndex]);} 当没有元素的时候直接退出只有一个元素的时候直接return即可 确定单层递归的逻辑 int maxIndex leftIndex;// 最大值所在位置int maxVal nums[maxIndex];// 最大值for (int i leftIndex 1; i rightIndex; i) {if (nums[i] maxVal){maxVal nums[i];maxIndex i;}}TreeNode root new TreeNode(maxVal);// 根据maxIndex划分左右子树root.left constructMaximumBinaryTree1(nums, leftIndex, maxIndex);root.right constructMaximumBinaryTree1(nums, maxIndex 1, rightIndex);return root; 通过循环找到最大值再通过递归左右最后return root即可 我们来看完整代码、 class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {return constructMaximumBinaryTree1(nums, 0, nums.length);}public TreeNode constructMaximumBinaryTree1(int[] nums, int leftIndex, int rightIndex) {if (rightIndex - leftIndex 1) {// 没有元素了return null;}if (rightIndex - leftIndex 1) {// 只有一个元素return new TreeNode(nums[leftIndex]);}int maxIndex leftIndex;// 最大值所在位置int maxVal nums[maxIndex];// 最大值for (int i leftIndex 1; i rightIndex; i) {if (nums[i] maxVal){maxVal nums[i];maxIndex i;}}TreeNode root new TreeNode(maxVal);// 根据maxIndex划分左右子树root.left constructMaximumBinaryTree1(nums, leftIndex, maxIndex);root.right constructMaximumBinaryTree1(nums, maxIndex 1, rightIndex);return root;} } 617.合并二叉树 力扣题目链接(opens new window) 给定两个二叉树想象当你将它们中的一个覆盖到另一个上时两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠那么将他们的值相加作为节点合并后的新值否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 注意: 合并必须从两个树的根节点开始。 思路 这道题不难我们只需要分别对两个数对应同一位置的节点进行比较并且对节点进行处理就可以采用那种遍历方式都行 确定递归方法及其参数 public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { 我们只需要两棵树的节点就行 确定终止条件 if (root1 null) return root2; if (root2 null) return root1; 如果树枝的一部分为空直接返回另一部分就行了 确定单层递归逻辑 root1.val root2.val;root1.left mergeTrees(root1.left,root2.left);root1.right mergeTrees(root1.right,root2.right);return root1; 将两个节点的值相加然后递归左右节点即可 我们来看完整代码 class Solution {// 递归public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {if (root1 null) return root2;if (root2 null) return root1;root1.val root2.val;root1.left mergeTrees(root1.left,root2.left);root1.right mergeTrees(root1.right,root2.right);return root1;} } 700.二叉搜索树中的搜索 力扣题目地址(opens new window) 给定二叉搜索树BST的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在则返回 NULL。 例如 在上述示例中如果要找的值是 5但因为没有节点值为 5我们应该返回 NULL。 思路 我们找到了对应target值的节点之后进行返回操作即可中间利用二叉搜索树的性质进行查找 确定递归函数及其参数 public TreeNode searchBST(TreeNode root, int val 传入节点和target值即可 确定终止条件 if (root null || root.val val) {return root;} 当根节点为空或者我们找到了对应值的节点的时候我们直接返回就行 确定单层递归逻辑 if (val root.val) {return searchBST(root.left, val);} else {return searchBST(root.right, val);} 如果root的值比target大我们就从root的左子树去递归反之亦然 我们来看完整代码 class Solution {// 递归利用二叉搜索树特点优化public TreeNode searchBST(TreeNode root, int val) {if (root null || root.val val) {return root;}if (val root.val) {return searchBST(root.left, val);} else {return searchBST(root.right, val);}} } 98.验证二叉搜索树 力扣题目链接(opens new window) 给定一个二叉树判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 思路 二叉搜索树 左节点小于中间节点小于右节点注意是所有左节点 下面这个情况是不符合的 不能单纯的比较左节点小于中间节点右节点大于中间节点就完事了。 写出了类似这样的代码 if (root-val root-left-val root-val root-right-val) {return true; } else {return false; } 确定终止条件 if (root NULL) return true; 递归到空节点我们返回true因为空节点也是二叉搜索树 确定单层递归逻辑 boolean left isValidBST(root.left);if (pre ! null pre.val root.val) return false;pre root; // 记录前一个节点boolean right isValidBST(root.right);return left right; 左中右中序遍历找到最左边最小的节点值然后一层一层返回去判断当前节点值是否大于pre一旦有一个节点不满足就会返回false 然后向上返回回去。 我们可以通过图示理解 5/ \3 7/ \ \ 1 4 8 isValidBST(5) ├── left isValidBST(3) │ ├── left isValidBST(1) │ │ ├── left isValidBST(NULL) → true │ │ ├── pre NULL → 1 │ │ └── right isValidBST(NULL) → true │ │ └── 返回true true true │ ├── pre 1 → 3 │ └── right isValidBST(4) │ ├── left isValidBST(NULL) → true │ ├── pre 3 → 4 │ └── right isValidBST(NULL) → true │ └── 返回true true true │ └── 返回true true true ├── pre 4 → 5 └── right isValidBST(7)├── left isValidBST(NULL) → true├── pre 5 → 7└── right isValidBST(8)├── left isValidBST(NULL) → true├── pre 7 → 8└── right isValidBST(NULL) → true└── 返回true true true└── 返回true true true └── 返回true true true我们来看完整代码 class Solution {private TreeNode pre null; // 用来记录前一个节点public boolean isValidBST(TreeNode root) {if (root null) return true;boolean left isValidBST(root.left);if (pre ! null pre.val root.val) return false;pre root; // 记录前一个节点boolean right isValidBST(root.right);return left right;} }
http://www.pierceye.com/news/287829/

相关文章:

  • 教学网站建设网站建设岗位有哪些
  • 网站建设合同的验收表网页网站的区别是什么
  • 开福区网站建设中wordpress调用所有栏目
  • 网站建设的流程是什么意思青岛做网站公司
  • 什么网站有项目做中铁建设企业门户网
  • 网站域名商代理商安卓商店
  • 深圳中英文网站建设广州知名设计公司排名
  • 一个公司设计网站怎么做的蜜桃传奇免费网页版
  • 网络推广网站培训班有人用wordpress默认主题
  • 网站建设 后台南宁做网站方案
  • 在线制作插画网站网站建设有哪些公司
  • 合肥的网站建设剂屏自己可以做开奖网站吗
  • 官网设计比较好看的网站学校网站建设对教学的意义
  • 济南建站推荐企汇优见效付款毕设代做网站招聘
  • 泰然建设网站免费软件app下载大全正能量网站
  • 张掖市网站建设北京代理记账财务公司
  • 中铁建设集团网站网络公司手机网站
  • 站长工具是什么意思建设银行网站 开户行怎么查
  • 做简历模板的网站都有哪些wordpress是啥东西
  • 网站流量渠道湖州做网站优化
  • 汽车网站哪个好预付的网站开发费用怎么入账
  • 网站代管理哪个网站有介绍拿到家做的手工活
  • 惊艳的网站网站建设实训过程报告
  • 秦皇岛做网站公司企业网站备案需要什么
  • 做网站必须开厂吗科协网站建设建议
  • 西宁 网站建设凡科做视频网站
  • wordpress中文主题 wp-cmsseo排名赚钱
  • 优质的网站制作在线查企业信息查询平台
  • 天津网站建设学习电子商务企业网站建设实训报告
  • 怎么让网站收录在google怎么免费安装wordpress主题