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

株洲网站建设全屋设计师需要学什么

株洲网站建设,全屋设计师需要学什么,口碑营销的定义,app公司简介范文大全leetcode刷题 | 关于二叉树的题型总结1 文章目录leetcode刷题 | 关于二叉树的题型总结1题目连接完全二叉树插入器在每个树行中找最大值找树左下角的值二叉树的右视图二叉树剪枝题目连接 919. 完全二叉树插入器 - 力扣#xff08;LeetCode#xff09; 515. 在每个树行中找最…leetcode刷题 | 关于二叉树的题型总结1 文章目录leetcode刷题 | 关于二叉树的题型总结1题目连接完全二叉树插入器在每个树行中找最大值找树左下角的值二叉树的右视图二叉树剪枝题目连接 919. 完全二叉树插入器 - 力扣LeetCode 515. 在每个树行中找最大值 - 力扣LeetCode 513. 找树左下角的值 - 力扣LeetCode 199. 二叉树的右视图 - 力扣LeetCode 814. 二叉树剪枝 - 力扣LeetCode 297. 二叉树的序列化与反序列化 - 力扣LeetCode 完全二叉树插入器 class CBTInserter {TreeNode root;// 存入不完整结构的节点DequeTreeNode deq;public CBTInserter(TreeNode root) {this.root root;deq new ArrayDeque();//添加到队列尾部deq.offer(root);while(deq.peek().left ! null deq.peek().right ! null){TreeNode temp deq.poll();deq.offer(temp.left);deq.offer(temp.right);} }public int insert(int v) {TreeNode node deq.peek();if(node.left null) node.left new TreeNode(v);else{node.right new TreeNode(v);deq.poll();deq.offer(node.left);deq.offer(node.right);}return node.val;}public TreeNode get_root() {return root;} }在每个树行中找最大值 dfs解法按照中左右顺序遍历 class Solution {ListInteger res new ArrayList();public ListInteger largestValues(TreeNode root) {dfs(root,0);return res;}public void dfs(TreeNode root,int depth){if(root null) return;if(res.size() depth){res.add(root.val);}res.set(depth,Math.max(root.val,res.get(depth)));if(root.left ! null) dfs(root.left,depth1);if(root.right!null) dfs(root.right,depth1);} }层序遍历层序遍历具有通用性在之后几道题中都可以这么做 class Solution { public ListInteger largestValues(TreeNode root) {ListInteger res new ArrayList();DequeTreeNode deq new ArrayDeque();if(root null) return res;deq.add(root);while(!deq.isEmpty()){int size deq.size();int temp Integer.MIN_VALUE;while(size--0){TreeNode node deq.poll();temp Math.max(temp,node.val);if(node.left ! null) deq.add(node.left);if(node.right ! null) deq.add(node.right);}res.add(temp);}return res; } }找树左下角的值 class Solution {public int findBottomLeftValue(TreeNode root) {if(root null) return -1;DequeTreeNode deq new ArrayDeque();deq.add(root);int res root.val;while(!deq.isEmpty()){int size deq.size();for(int i 0;isize;i){TreeNode node deq.poll();if(i 0) res node.val;if(node.left !null) deq.add(node.left);if(node.right ! null) deq.add(node.right);}}return res;} }二叉树的右视图 class Solution {public ListInteger rightSideView(TreeNode root) {ListInteger res new ArrayList();if(root null) return res;DequeTreeNode deq new ArrayDeque();deq.add(root);while (!deq.isEmpty()){int size deq.size();for (int i 0;isize;i){TreeNode node deq.poll();if (i size-1) res.add(node.val);if (node.left ! null) deq.add(node.left);if (node.right ! null) deq.add(node.right);}}return res;} }二叉树剪枝 递归结束条件左子树为空右子树为空当前节点的值为 0同时满足时才表示以当前节点为根二叉树的所有节点都为 0需要将这棵子树移除返回空 class Solution {public TreeNode pruneTree(TreeNode root) {if (root null) return null;root.left pruneTree(root.left);root.right pruneTree(root.right);if (root.left null root.right null root.val 0) return null;return root;} }DFS从评论区大佬的评论里知道了StringJoiner类做一个简单的解释 StringJoiner是java.util包下的一个工具类jdk1.8出来的 作用是在构造字符串时可以自动添加前缀、后缀及分隔符而不需要自己去实现这些添加字符的逻辑 StringJoiner sj new StringJoiner(“”, “[”, “]”); 代表每一个字符的后缀为前缀开始为[ 后缀结束为 ] 如果 sj.add(“1”).add(“2”).add(“3”); 那么toString() 输出[1,2,3] import java.util.*; public class Codec {// Encodes a tree to a single string.public String serialize(TreeNode root) {if (root null) return ;DequeTreeNode deq new ArrayDeque();// 可以提供后缀的末尾StringJoiner sj new StringJoiner(,);deq.offer(root);sj.add(Integer.toString(root.val));while (!deq.isEmpty()){int size deq.size();while (size-- 0){TreeNode node deq.poll();if (node.left ! null){deq.add(node.left);sj.add(Integer.toString(node.left.val));}else sj.add(null);if (node.right ! null){deq.add(node.right);sj.add(Integer.toString(node.right.val));}else sj.add(null);}}return sj.toString();}// Decodes your encoded data to tree.public TreeNode deserialize(String data) {if (data ) return null;String[] strings data.split(,);DequeTreeNode deq new ArrayDeque();TreeNode root new TreeNode(Integer.parseInt(strings[0]));deq.add(root);int index 1; //定位当前位置遍历顺序为中左右int l strings.length;while(index l){TreeNode node deq.poll();if (!strings[index].equals(null)){TreeNode left new TreeNode(Integer.parseInt(strings[index]));node.left left;deq.add(left);}index; //找右节点if (index l !strings[index].equals(null)){TreeNode right new TreeNode(Integer.parseInt(strings[index]));node.right right;deq.add(right);}index; //找左节点}return root;} }BFS解法 public class Codec {// Encodes a tree to a single string.public String serialize(TreeNode root) {StringBuilder stringBuilder new StringBuilder();return appendstr(root,stringBuilder).toString();}private StringBuilder appendstr(TreeNode node,StringBuilder stringBuilder){if (node null) return stringBuilder.append(null,);else {// 中左右stringBuilder.append(Integer.toString(node.val),);stringBuilder appendstr(node.left,stringBuilder);stringBuilder appendstr(node.right,stringBuilder);}return stringBuilder;}// Decodes your encoded data to tree.public TreeNode deserialize(String data) {String[] strings data.split(,);// 速度更快ListString nodes new LinkedList(Arrays.asList(strings));return totree(nodes);}public TreeNode totree(ListString nodes){if (nodes.get(0).equals(null)){nodes.remove(0);return null;}TreeNode root new TreeNode(Integer.parseInt(nodes.get(0)));nodes.remove(0);root.left totree(nodes);root.right totree(nodes);return root;} }
http://www.hkea.cn/news/14502410/

相关文章:

  • 网站如何运营管理wordpress如何将文章链接地址
  • 网站制作类型江西人才网
  • 鄂州市住房和城乡建设部网站plone网站开发
  • 网站改域名备案吗wordpress问答悬赏功能
  • 网站建设基础方案可做百科资料参考的网站
  • 广州城市建设档案馆网站公司网站开发怎么做
  • 外贸网站产品广西水利电力建设集团网站
  • 旅游网站开发与建设论文页面设计要会什么
  • 单页面网站多少钱社保扣款怎么在社保网站上做》
  • 泰安网站建设制作服务浏览器网页打不开怎么解决
  • 甘肃网站建设专业定制深圳软件外包公司排名
  • 网站开发8080无法访问此页面页面设计收获心得
  • 网站推广的常用方法上海市中心
  • 贵州网站开发制作公司爱站网长尾词挖掘工具
  • 惠州网站建设技术托管wordpress 伪静态配置
  • 数据服务网站开发电脑制作网站的软件
  • 公司网站可直接购物支付国内高端品牌网站建设
  • 建网站的价格友情链接网自动收录
  • 企业电子商务网站建设教案自考本科报名官网入口
  • 增城微信网站建设表白二维码生成器
  • 成品网站能用吗外贸wordpress主题
  • 湘潭网站建设 就找磐石网络创意设计工作室
  • 水果行业为什么做网站营口电商网站建设
  • 建设网站所需的费用的估算天眼查官网查个人
  • 一嗨租车网站建设的功能特色商城网站建设方案书
  • 响应式网站后台公众号开发流程
  • 房产交易网站建设策划案区域城市分站网站怎么做
  • seo网站建设 厦门seo优化技术培训中心
  • 一站式网站手机端怎么做网站建设与管理方向
  • 辽宁网站建设平台广州做网站推广的公司