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

二叉树习题其六【力扣】【算法学习day.13】

前言

书接上篇文章二叉树习题其四,这篇文章我们将基础拓展

###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.修剪二叉搜索树

题目链接:669. 修剪二叉搜索树 - 力扣(LeetCode)

题面:

基本分析:这题和删除节点思路一样

/*** 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 {int h;int l;public TreeNode trimBST(TreeNode root, int low, int high) {h = high;l = low;return recursion(root);}public TreeNode recursion(TreeNode root){if(root==null)return null;root.left = recursion(root.left);root.right = recursion(root.right);if(root.val>h)return root.left;else if(root.val<l)return root.right;return root;}
}

2.将有序数组转换成二叉搜索树

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

题面:

基本分析:我们每次取数组中间的值作为根节点,将这个过程递归

代码:

/*** 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 {int len;int[] arr;public TreeNode sortedArrayToBST(int[] nums) {int n = nums.length;arr = nums;len = n;return recursion(0,n-1);}public TreeNode recursion(int l,int r){if(l>r)return null;int m = (l+r)/2;TreeNode node = new TreeNode(arr[m]);node.left=recursion(l,m-1);node.right = recursion(m+1,r);return node;}
}

3.把二叉搜索树转换为累加树

题目链接:538. 把二叉搜索树转换为累加树 - 力扣(LeetCode) 

题面:

基本分析:就是遍历

代码:

/*** 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 {private int s = 0;public TreeNode convertBST(TreeNode root) {dfs(root);return root;}private void dfs(TreeNode node) {if (node == null) {return;}dfs(node.right); s += node.val;node.val = s; dfs(node.left); }
}

后言

以上就是二叉树的余下习题,希望有所帮助,一同进步,共勉!  

http://www.lryc.cn/news/469440.html

相关文章:

  • 互联网的无形眼睛:浏览器指纹与隐私保护攻略
  • 后端技术:有哪些常见的应用场景?
  • 【Unity 安装教程】
  • C++ 二级测试卷及答案
  • Java基础(7)图书管理系统
  • 使用 Spring Boot 实现图片上传
  • 深度解析跨境支付之产品架构
  • Linux下的线程同步与死锁避免
  • 【Python爬虫实战】Selenium自动化网页操作入门指南
  • mono源码交叉编译 linux arm arm64全过程
  • 矩阵的可解性:关于Ax=b的研究
  • 10.22.2024刷华为OD C题型(三)--for循环例子
  • QT:MaintenanceTool 模块安装工具
  • 同标签实现监听LocalStorage
  • JAVA高性能缓存项目
  • 智慧农业大数据平台:智汇田园,数驭未来
  • Go语言基础教程:可变参数函数
  • 高并发场景下解决并发数据不一致
  • OpenAI GPT-o1实现方案记录与梳理
  • Excel:vba实现生成随机数
  • Python | Leetcode Python题解之第506题相对名次
  • 安全见闻(6)
  • Promise、async、await 、异步生成器的错误处理方案
  • 腾讯云:数智教育专场-学习笔记
  • Ovis: 多模态大语言模型的结构化嵌入对齐
  • python的Django的render_to_string函数和render函数模板的使用
  • 基于Python大数据的王者荣耀战队数据分析及可视化系统
  • 【Linux学习】(3)Linux的基本指令操作
  • Mac 使用脚本批量导入 Apple 歌曲
  • 全桥PFC电路及MATLAB仿真