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

每日5题Day22 - LeetCode 106 - 110

每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前!

第一题:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode)

class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) {Map<Integer, Integer> map = new HashMap<>();//把中序每个点都记录下来for(int i = 0; i < inorder.length; i++){map.put(inorder[i], i);}//传入后序的最后一个节点,因为是根节点TreeNode head = helper(0, inorder.length - 1, map, postorder, postorder.length - 1);return head;}private static TreeNode helper(int low, int high, Map<Integer, Integer> map, int[] postorder, int idx){if(low > high){return null;}//找到对应的值int val = postorder[idx];//在中序中找到分割点int index = map.get(val);TreeNode node = new TreeNode(val);//递归找到左右子树node.left = helper(low, index - 1, map, postorder, idx - (high - index) - 1);node.right = helper(index + 1, high, map, postorder, idx - 1);return node;}
}

第二题:107. 二叉树的层序遍历 II - 力扣(LeetCode)

class Solution {public List<List<Integer>> levelOrderBottom(TreeNode root) {//就是使用栈每次把每一层记录下来,最后逆序输出//本质上还是属于层序遍历List<List<Integer>> res = new ArrayList<>();if(root == null){return res;}Deque<TreeNode> stack = new ArrayDeque<>();stack.offer(root);while(!stack.isEmpty()){List<Integer> tmp = new ArrayList<>();int size = stack.size();for(int i = 0; i < size; i++){TreeNode cur_node = stack.poll();tmp.add(cur_node.val);if(cur_node.left != null){stack.offer(cur_node.left);}if(cur_node.right != null){stack.offer(cur_node.right);}}res.add(0,tmp);}return res;}
}

第三题:108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode)

class Solution {public TreeNode sortedArrayToBST(int[] nums) {//题目提到有序,二叉,高度要平衡,//相当于每次我们找到节点都是要中间节点//随后向两边扩散,所以创建二叉搜索树的时候一定要二叉return helper(nums, 0 , nums.length - 1);}private TreeNode helper(int[] nums, int left, int right){if(left > right){return null;}//找到中间节点int mid = left + (right - left) / 2;TreeNode node = new TreeNode(nums[mid]);//递归node.left = helper(nums, left, mid - 1);node.right = helper(nums, mid + 1, right);//注意是返回某个节点return node;}
}

第四题:109. 有序链表转换二叉搜索树 - 力扣(LeetCode)

class Solution {public TreeNode sortedListToBST(ListNode head) {if (head == null) {return null; // 基本情况}return convertToBST(head, null);}private TreeNode convertToBST(ListNode head, ListNode tail) {if (head == tail) {return null; // 基本情况:子列表为空}//使用快慢指针来实现二分中查找中位的过程ListNode slow = head;ListNode fast = head;while (fast != tail && fast.next != tail) {slow = slow.next;fast = fast.next.next;}TreeNode root = new TreeNode(slow.val);root.left = convertToBST(head, slow);root.right = convertToBST(slow.next, tail);return root;}
}

 第五题:110. 平衡二叉树 - 力扣(LeetCode)

class Solution {public boolean isBalanced(TreeNode root) {//对于每一个点进行递归判断return getH(root) != -1;}private static int getH(TreeNode node){//对于每一个特定的点,如果为空则高度为0if(node == null){return 0;}//找到左边,如果左边不满足,则自身也不满足int left = getH(node.left);if(left == -1){return -1;}//同理,右边同样逻辑int right = getH(node.right);if(right == -1){return -1;}//注意下面判别式,判断左右高度差值是否大于1//大了肯定不满足了//否则我们给出一个最大高度if(Math.abs(left - right) > 1){return -1;}else{return Math.max(left, right) + 1;}}
}

相关文章:

  • windows上安装MongoDB,springboot整合MongoDB
  • vllm 使用FP8运行模型
  • iMazing3软件安装包下载
  • 【C++】——继承(详解)
  • 如何选择靠谱的LabVIEW外包公司
  • Web前端浪漫源码:编织梦想与爱的交织乐章
  • np.array()按权重求平均值详解
  • vue2插槽
  • PayPal,stripe,square轮询系统你不知道的秘密
  • 三次样条曲线和三次多项式曲线
  • 用质量属性场景来描述可用性(2024年上半年软考系统架构师案例分析题)
  • CSS中,设置 0.5px 会生效吗
  • Flask基础2-Jinja2模板
  • git版本控制工具常用命令
  • 推荐一款WPF绘图插件OxyPlot
  • Google 是如何开发 Web 框架的
  • 《Java编程思想》读书笔记-对象导论
  • 2017 年终总结 —— 在路上
  • es6
  • Java 内存分配及垃圾回收机制初探
  • Java,console输出实时的转向GUI textbox
  • Java精华积累:初学者都应该搞懂的问题
  • js如何打印object对象
  • Lucene解析 - 基本概念
  • Material Design
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Python利用正则抓取网页内容保存到本地
  • Vue小说阅读器(仿追书神器)
  • 对象管理器(defineProperty)学习笔记
  • 多线程事务回滚
  • 基于Android乐音识别(2)
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端技术周刊 2019-01-14:客户端存储
  • 世界上最简单的无等待算法(getAndIncrement)
  • 手写双向链表LinkedList的几个常用功能
  • 数据仓库的几种建模方法
  • 一起参Ember.js讨论、问答社区。
  •  一套莫尔斯电报听写、翻译系统
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​Redis 实现计数器和限速器的
  • ###项目技术发展史
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • $forceUpdate()函数
  • (+4)2.2UML建模图
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (4.10~4.16)
  • (8)STL算法之替换
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十)Flink Table API 和 SQL 基本概念
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)Windows2003安全设置/维护
  • (转载)Linux网络编程入门