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

昆明学习网站建设江苏省教育现代化建设水平监测网站

昆明学习网站建设,江苏省教育现代化建设水平监测网站,山东城市建设厅网站,企业注册邮箱的步骤提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣654. 最大二叉树二、力扣617. 合并二叉树三、力扣700. 二叉搜索树中的搜索四、力扣98. 验证二叉搜索树 前言 一、力扣654. 最大二叉树 /*** Definitio…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣654. 最大二叉树
  • 二、力扣617. 合并二叉树
  • 三、力扣700. 二叉搜索树中的搜索
  • 四、力扣98. 验证二叉搜索树


前言


一、力扣654. 最大二叉树

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {return fun(nums, 0, nums.length-1);}public TreeNode fun(int[] nums, int strat, int end){if(strat > end)return null;int index = indexFun(nums, strat, end);TreeNode cur = new TreeNode(nums[index]);int leftStart = strat, leftEnd = index-1;int rightStart = index+1, rightEnd = end;TreeNode leftChild = fun(nums, leftStart, leftEnd);TreeNode rightChild = fun(nums, rightStart, rightEnd);cur.left = leftChild;cur.right = rightChild;return cur;}public int indexFun(int[] nums, int low, int high){int max = nums[low];int index = low;for(int i = low; i <= high; i ++){if(nums[i] > max){max = nums[i];index = i;}}return index;}
}

二、力扣617. 合并二叉树

新建的树

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {if(root1 == null && root2 == null){return null;}TreeNode cur = new TreeNode();TreeNode childLeft = null;TreeNode childRight = null;if(root1 != null && root2 != null){cur.val = root1.val + root2.val;childLeft = mergeTrees(root1.left, root2.left);childRight = mergeTrees(root1.right, root2.right);}if(root1 != null && root2 == null){cur.val = root1.val;childLeft = mergeTrees(root1.left, null);childRight = mergeTrees(root1.right, null);}if(root1 == null && root2 != null){cur.val = root2.val;childLeft = mergeTrees(null, root2.left);childRight = mergeTrees(null, root2.right);}cur.left = childLeft;cur.right = childRight;return cur;}
}

在原本的树上更新

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
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;}
}

迭代

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {Deque<TreeNode> deq = new LinkedList<>();if(root1 == null)return root2;if(root2 == null)return root1;deq.offerLast(root1);deq.offerLast(root2);while(!deq.isEmpty()){TreeNode p1 = deq.pollFirst();TreeNode p2 = deq.pollFirst();p1.val = p1.val + p2.val;if(p1.left != null && p2.left != null){deq.offerLast(p1.left);deq.offerLast(p2.left);}if(p1.right != null && p2.right != null){deq.offerLast(p1.right);deq.offerLast(p2.right);}if(p1.left == null && p2.left != null){p1.left = p2.left;}if(p1.right == null && p2.right != null){p1.right = p2.right;}}return root1;}
}

三、力扣700. 二叉搜索树中的搜索

递归

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode searchBST(TreeNode root, int val) {if(root == null)return null;if(root.val < val){return searchBST(root.right, val);}if(root.val > val){return searchBST(root.left, val);}return root;}
}

迭代

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode searchBST(TreeNode root, int val) {Deque<TreeNode> deq = new LinkedList<>();deq.offerLast(root);while(!deq.isEmpty()){TreeNode p = deq.pollFirst();if(p == null)return null;if(p.val == val)return p;if(p.val > val){deq.offerLast(p.left);}if(p.val < val){deq.offerLast(p.right);}}return null;}
}

四、力扣98. 验证二叉搜索树

递归

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {List<Integer> path = new ArrayList<>();public boolean isValidBST(TreeNode root) {inOrder(root);for(int i = 0; i < path.size()-1; i ++){if(path.get(i) >= path.get(i+1)){return false;}}return true;}public void inOrder(TreeNode root){if(root == null){return;}inOrder(root.left);path.add(root.val);inOrder(root.right);}
}

迭代

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {List<Integer> path = new ArrayList<>();public boolean isValidBST(TreeNode root) {Deque<TreeNode> deq = new LinkedList<>();TreeNode p  = root;while(!deq.isEmpty() || p != null){if(p != null){deq.offerLast(p);p = p.left;}else{p = deq.pollLast();path.add(p.val);p = p.right;}}for(int i = 0; i < path.size()-1; i ++){if(path.get(i) >= path.get(i+1)){return false;}}return true;}
}
http://www.yayakq.cn/news/660603/

相关文章:

  • 我想在网站做宣传怎么弄建个大型网站要多少钱
  • 城乡建设部网站安全员证书查询flash网站制作单选框和复选框ui组件
  • 哪个网站可以做记录视频企业网站建设数据现状分析
  • 媒体网站的销售怎么做wordpress代码添加
  • wordpress数据库优化技巧长沙seo建站
  • 网站改标题降权js网站开发视频教程
  • 如何在学校网站上做链接织梦网站标题被改
  • 做网站的抬头标语怎么外贸网站制作广州
  • ipv6网站制作开发平台指的是什么
  • 网站logo设计思路海口网站建设咨询
  • 免费建站免费推广的网站wordpress评论头像 修改
  • 珠海建设网站公司哪家好长沙抖音代运营电话
  • 当当网网站的建设过程大数据技术建设网站
  • 网站开发前端要学什么软件wordpress主题安装在哪里
  • 河南网站建设哪里有牡丹江网页制作公司
  • 上海网站建设备案号网络推广有哪些网站
  • 营销网站建设的重要性天眼网
  • 宁波网站建设计html作业
  • 黑龙江省住房和建设厅网站首页私人怎么做网站
  • 东莞网站建设 光龙广西 南宁 微信微网站开发
  • 黑色网站模板广西建设网公布名单
  • 怎样在各大网站做推广做网站后要回源码有何用
  • 岳阳企业网站建设网站建设有什么意见
  • 如何网站做镜像wordpress 新闻 通知
  • 网站怎么自适应屏幕大小朋友圈网络营销
  • 网站定制开发一般多久企业网站的规划与设计
  • 网站下载织梦模板广州网页设计机构
  • 网站设计方案书pptwordpress 替换父主题函数
  • 离石古楼角网站建设效果图在线
  • 关注网站建设科目一速成网站建设