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

Day56 | 99. 恢复二叉搜索树、103. 二叉树的锯齿形层序遍历、109. 有序链表转换二叉搜索树、113. 路径总和 II

99. 恢复二叉搜索树

题目链接:99. 恢复二叉搜索树 - 力扣(LeetCode)

题目难度:中等

代码:

class Solution {public void recoverTree(TreeNode root) {List<TreeNode> list=new ArrayList<>();dfs(root,list);TreeNode x=null;TreeNode y=null;for(int i=0;i<list.size()-1;i++){if(list.get(i).val>list.get(i+1).val){y=list.get(i+1);if(x==null){x=list.get(i);}}}if(x!=null&&y!=null){int tmp=x.val;x.val=y.val;y.val=tmp;}}public void dfs(TreeNode node,List<TreeNode> list){if(node==null) return;dfs(node.left,list);list.add(node);dfs(node.right,list);}
}

103. 二叉树的锯齿形层序遍历

题目链接:103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode)

题目难度:中等

代码:

class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {Queue<TreeNode> queue=new LinkedList<>();List<List<Integer>> res=new ArrayList<>();if(root!=null) queue.add(root);while(!queue.isEmpty()){LinkedList<Integer> tmp=new LinkedList<>();for(int i=queue.size();i>0;i--){TreeNode node=queue.poll();if(res.size()%2==0) tmp.addLast(node.val);else tmp.addFirst(node.val);if(node.left!=null) queue.add(node.left);if(node.right!=null) queue.add(node.right);}res.add(tmp);}return res;}
}

109. 有序链表转换二叉搜索树

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

题目难度:中等

代码:

class Solution {public TreeNode sortedListToBST(ListNode head) {return buildTree(head, null);}public TreeNode buildTree(ListNode left, ListNode right) {if (left == right) {return null;}ListNode mid = getMedian(left, right);TreeNode root = new TreeNode(mid.val);root.left = buildTree(left, mid);root.right = buildTree(mid.next, right);return root;}public ListNode getMedian(ListNode left, ListNode right) {ListNode fast = left;ListNode slow = left;while (fast != right && fast.next != right) {fast = fast.next;fast = fast.next;slow = slow.next;}return slow;}
}

113. 路径总和 II

题目链接:113. 路径总和 II - 力扣(LeetCode)

题目难度:中等

代码:

class Solution {LinkedList<List<Integer>> res = new LinkedList<>();LinkedList<Integer> path = new LinkedList<>();public List<List<Integer>> pathSum(TreeNode root, int targetSum) {recur(root, targetSum);return res;}public void recur(TreeNode root, int tar) {if (root == null) return;path.add(root.val);tar -= root.val;if (tar == 0 && root.left == null && root.right == null)res.add(new LinkedList<Integer>(path));recur(root.left, tar);recur(root.right, tar);path.removeLast();}
}

相关文章:

  • 使用openpyxl时的一些注意点
  • 1.2 腾讯校招通关指南-面试官评分标准:技术岗/产品岗核心考核点揭秘
  • 【自相关】全局 Moran’s I 指数
  • OPPO Android 移动设备日志文件目录结构及其内容分析
  • git合并分支原理
  • 适合stm32 前端adc使用的放大器芯片
  • jetson orin nano 开发板conda 的 base 环境在 shell 启动时自动激活
  • 如何解决服务器文件丢失或损坏的问题?
  • JAVA学习-Stream
  • Spring IoC与DI详解:从Bean概念到手写实现
  • Spring Batch 专题系列(四):配置与调度 Spring Batch 作业
  • 分库分表-除了hash分片还有别的吗?
  • 算法思想之分治-快排
  • Java基础 4.15
  • PCL八叉树聚类
  • Python基础语法2
  • 游戏代码编辑
  • 凸优化第2讲:凸优化建模
  • 一篇文章快速上手linux系统中存储多路径multipath的配置
  • MCP、RAG与Agent:下一代智能系统的协同架构设计
  • 一场小型越野赛为何吸引众多越野大神打卡?
  • 嵩山少林风景区女游客进男厕:不能止步于批评
  • 董军与越南国防部长共同主持中越边境国防友好交流活动
  • “孤独的美食家”在上海连吃三天,直呼“好吃”“老嗲”
  • 习近平在马来西亚总理安瓦尔举行的欢迎宴会上的致辞
  • 新高!足金饰品报价每克破千元