代码随想录算法训练营29期|day 23 任务以及具体安排

  •  669. 修剪二叉搜索树 
  • class Solution {public TreeNode trimBST(TreeNode root, int low, int high) {if (root == null) {return null;}if (root.val < low) {return trimBST(root.right, low, high);}if (root.val > high) {return trimBST(root.left, low, high);}// root在[low,high]范围内root.left = trimBST(root.left, low, high);root.right = trimBST(root.right, low, high);return root;}
    }

    本题的关键是要明白删除节点,不能直接返回null,要考虑如果是小于low的话,要考虑删除节点的右子树,如果大于high的话,要考虑删除节点的左子树。

  •  108.将有序数组转换为二叉搜索树 
  • class Solution {public TreeNode sortedArrayToBST(int[] nums) {return sortedArrayToBSTHelper(nums,0,nums.length);}public TreeNode sortedArrayToBSTHelper(int[] nums, int begin , int end){if(begin == end) return null;int middle = (begin+end)/2;TreeNode root = new TreeNode(nums[middle]);        root.left = sortedArrayToBSTHelper(nums, begin, middle);root.right = sortedArrayToBSTHelper(nums, middle+1, end);return root;}
    }

    本题相对比较简单,关键是思考清楚begin和end的开闭情况。

  • 思路:每次取中间的值作为父节点,然后遍历middle左边的区间和右边的区间。

  •  538.把二叉搜索树转换为累加树 
  • class Solution {int sum;public TreeNode convertBST(TreeNode root) {sum = 0;convertBST1(root);return root;}// 按右中左顺序遍历,累加即可public void convertBST1(TreeNode root) {if (root == null) {return;}convertBST1(root.right);sum += root.val;root.val = sum;convertBST1(root.left);}
    }

    思路:本题的关键是右中左的遍历顺序,用一个指针sum记录前一个节点的值,与当前节点相加。

  •  总结篇 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416274.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BGP最通俗易懂的讲解——路由反射器防环机制

路由反射器防环机制&#xff1a;Originator ID与Cluster List 一、Originator ID 该属性属于BGP的可选非过渡属性&#xff1b;Originator ID由RR产生&#xff0c;使用的Router ID的值标识路由的发送者&#xff0c;用于防止集群内产生路由环路&#xff1b;当一条路由第一次被RR…

STM32标准库开发——串口收发HEX/文本数据包

数据包规则定义 定长HEX数据包 以0xFF为开头&#xff0c;0xFE为包围&#xff0c;中间固定四个字节长度的数据 定长HEX数据包状态机程序编写 //HEX数据包状态机程序编写 void USART1_IRQHandler(void) {static uint8_t RxState 0;static uint8_t pxRxPacket 0;if(USART_GetFl…

Vue 3 hooks的基本使用及疑问

前言 vue3也用过一段时间了&#xff0c;hooks听说过&#xff0c;但是一直没有用过。公司的前端项目里也没有相应的应用&#xff0c;因此打算系统的学习一下。 hooks与普通函数的区别 以实现一个加法功能为例。 普通函数未抽离 <template><div class"box&quo…

【网站项目】331基于jsp的超市库存商品管理系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Flink启动Yarn Session报错:Couldn‘t deploy Yarn session cluster

Flink版本&#xff1a;1.1.3 启动Yarn Session的语句&#xff1a;bin/yarn-session.sh -nm test -d 报错截图如下&#xff1a; 仅通过ERROR信息只能知道是yarn session集群未能正常启动&#xff0c;因此继续向下查找&#xff1a; 找到报错信息的Caused by部分&#xff1a; 报…

弟12章 网络编程

文章目录 网络协议概述 p164TCP协议与UDP协议的区别 p165TCP服务器端代码的编写 p166TCP服务器端流程 TCP客户端代码的编写 p167TCP客户端流程主机和客户端的通信流程 tcp多次通信服务器端代码 p168TCP多次通信客户端代码 p169UDP的一次双向通信 p170udp通信模型udp接收方代码u…

代码之外:工程师的成长进阶秘籍

程序员只懂技术能行吗&#xff1f; 为什么说技术人员“说”和“写”总得擅长一个&#xff1f; 你以为的“关注结果”是真的结果吗&#xff1f; 从一线工程师跃升团队管理者一共分几步&#xff1f; 在不断变化的职场环境中&#xff0c;技术人如何保持竞争力并实现自我增值&a…

Linux第29步_安装“Notepad++”软件

STM32CubeProgrammer脚本文件的后缀为“.tsv”&#xff0c;ST公司官方也叫做FlashLayout。在烧写“TF-A固件”之前&#xff0c;我们需要用“Notepad”软件打开“后缀为.tsv”的脚本文件&#xff0c;根据需求决定哪些文件需要更新&#xff0c;设置好这个脚本文件。 .tsv是文本格…

MATLAB对话框与菜单设计实验

本文MATLAB源码&#xff0c;下载后直接打开运行即可[点击跳转下载]-附实验报告https://download.csdn.net/download/Coin_Collecter/88740733 一、实验目的 1.掌握建立控件对象的方法。 2.掌握对话框设计方法。 3.掌握菜单设计方法。 二、实验内容 建立如下图所示的菜单。菜单…

串联RLC电路中的增益

在串联RLC电路中&#xff0c;增益又可以叫放大倍数&#xff0c;用M或者G表示 电压增益就是输出电压比输入电压&#xff0c;MVo/Vin 在串联RLC中&#xff0c;VoIr*Rac,VinIr*(sLr1/sCrRac) MRac/(sLr1/sCrRac) 当输入频率fs时&#xff0c;fr为谐振频率 输入频率0<fs<…

一步一步实现基于COMSOL的单模光纤波导仿真

COMSOL单模光纤波导仿真 &#x1f3a1;导航小助手&#x1f3a1; COMSOL单模光纤波导仿真1.模型向导2.构建几何3.添加完美匹配层&#xff1a;4.添加材料&#xff1a;5.添加散射边界条件&#xff1a;6.定义输入和输出&#xff1a;6.1 输入端定义6.2 输出端定义 7.划分网格7.1光纤…

小肥柴慢慢手写数据结构(C篇)(5-3 树的遍历)

小肥柴慢慢学习数据结构笔记&#xff08;C篇&#xff09;&#xff08;5-3 树的遍历&#xff09; 目录5-10 BST/AVL的前序、中序和后序遍历5-10-1 直观理解有序二叉树的3种遍历5-10-2 更加一般的规律 5-11 再看二叉树的前/中/后序遍历5-11-1 经典问题热身5-11-2 二叉树递归框架5…