• 235. 二叉搜索树的最近公共祖先

    • 可以按照二叉树的最近公共祖先进行操作
    • 也可以按照搜索树的特征,无需进行回溯,从上到下进行遍历
  • 701.二叉搜索树中的插入操作

    • ​​​​​​​将固定的数值插入到合适的位置
  • 450.删除二叉搜索树中的节点

    • ​​​​​​​分几种情况

      • ​​​​​​​删除节点不存在
      • 删除节点存在 且 左子树为空 右子树不为空
      • 删除节点存在 且 左子树不为空 右子树为空
      • 删除节点存在 且 左子树 右子树均都不为空 分别处理
package algor.trainingcamp;import algor.junior_algor.tree.TreeNode;/*** @author lizhe* @version 1.0* @description:* https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/* @date 2023/4/26 08:16* 235. 二叉搜索树的最近公共祖先* 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。** 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”** 来源:力扣(LeetCode)* 链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。*** 本题和二叉树的中序遍历不同,如果值的范围在p 和 q之间 说明是p和q的最近祖先* 如果root > p.val && root > q.val 需要在p的左子树寻找,* 如果root < p.val && root < q.val 需要在p的右子树寻找** 可以采用自顶向下寻找 无需回溯*/
public class LeetCode235 {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(null == root){return root;}//向左寻找if(root.val > p.val && root.val > q.val){TreeNode left = lowestCommonAncestor(root.left, p, q);if(left != null){return left;}}if(root.val < p.val && root.val < q.val){TreeNode right = lowestCommonAncestor(root.right, p, q);if(right != null){return right;}}return root;}
}
package algor.trainingcamp;import algor.junior_algor.tree.TreeNode;/*** @author lizhe* @version 1.0* @description:* 701. 二叉搜索树中的插入操作* 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。** 注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。** 来源:力扣(LeetCode)* 链接:https://leetcode.cn/problems/insert-into-a-binary-search-tree* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。* @date 2023/4/26 08:35** 需要将root插到合适的位置*/
public class LeetCode701 {public TreeNode insertIntoBST(TreeNode root, int val) {if(null == root){return new TreeNode(val);}if(root.val < val){root.right = insertIntoBST(root.right, val);}else{root.left = insertIntoBST(root.left, val);}return root;}
}
package algor.trainingcamp;import algor.junior_algor.tree.TreeNode;/*** @author lizhe* @version 1.0* @description: 450.删除二叉搜索树中的节点* @date 2023/4/26 08:57* <p>* 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。* <p>* 一般来说,删除节点可分为两个步骤:* <p>* 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 $O(h)$,h 为树的高度。* <p>* <p>* 删除节点不存在 直接返回空* 删除节点存在* * 左右孩子为空,直接删除节点 返回空* * 左孩子为空,删除节点,直接返回右孩子补位* * 右孩子为空,删除节点,直接返回左孩子补位* * 左右孩子均都不为空,则将删除节点的左孩子 放到待删除节点右孩子的最左 删除节点,返回待删除节点的右孩子* **/
public class LeetCode450 {public TreeNode deleteNode(TreeNode root, int key) {if (null == root) {return null;}if (root.val == key) {if (root.left == null && root.right == null) {return null;}if (root.left == null) {return root.right;}if (root.right == null) {return root.left;}if (null != root.left && null != root.right) {TreeNode cur = root.right;//找到待删除节点右孩子的最左while (cur.left != null) {cur = cur.left;}cur.left = root.left;return root.right;}}if(root.val > key){root.left = deleteNode(root.left, key);}else{root.right = deleteNode(root.right, key);}return root;}
}

day22 二叉树| 235,701,450相关推荐

  1. 力扣235|701|450

    235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) 思路 不用改树结构,直接找到空结点位置插入 类似之前的二叉树的公共祖先,由二叉树最下面进行遍历,由下往上,特别关注的是二叉搜索树是一个 ...

  2. 代码随想录_二叉树_leetcode 701 450

    leetcode701. 二叉搜索树中的插入操作 701. 二叉搜索树中的插入操作 给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树. 返回插入后二叉搜索 ...

  3. 代码随想录Day19 | LC235, 701, 450

    完全二叉树一定是平衡二叉树,堆的排序是父节点大于子节点,而搜索树是父节点大于左孩子,小于右孩子,所以堆不是平衡二叉搜索树 235. Lowest Common Ancestor of a Binary ...

  4. oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等)

    oracle汉字转拼音(获得全拼/拼音首字母/拼音截取等) oracle 字符集 GBK 没有问题 , UTF -8 需要修改一下 1.获得全拼 SELECT GETHZPY.GETHZFULLPY( ...

  5. 根据用户名字刷账户(取用户名的字母)

    最近由于手动创建用户过于繁琐,就写了个存储过程根据用户名字刷账户. 过滤多余的部分 由于一些名字代有别称,会有一些"("类的符号,所以需要过滤.这里如果有"(" ...

  6. 汉字转拼音函数 linux,oracle 汉字转拼音

    1.要有创建过程.函数的权限 -- grant create procedure to user; 2.在命令窗口中,执行以下语句,创建包 CREATE OR REPLACE package GetH ...

  7. 大一C语言图形界面点餐系统

    大一的C语言课设,希望能给学弟学妹们一些启发 首先,本程序基于easyx图形接口开发,运行前先下载easyx.h graphics.h 等头文件 百度云链接:https://pan.baidu.com ...

  8. ORACLE根据汉字获取拼音码:首字母/全拼/首字母截取

    create or replace package  GetHZPY is --oracle汉字转拼音 PACKAGE     --1.获得全拼  www.2cto.com   --SELECT GE ...

  9. ORACLE根据汉字返回拼音的包--强大

    1.发现原来的函数有一些汉字不能进行翻译,比喻说:横.衡:替换成新函数完美解决该类问题. 但是发现该函数遇到空值会异常,等于说没有做空值判断:发现该函数oracle R2 11G上运行 只能在gbk1 ...

最新文章

  1. 定制浏览器地址栏前的小图标
  2. Android Studio开发环境配置(win7)
  3. 怎么让修改的html持久化_redis持久化机制
  4. ASP.NET Core - Razor页面之Handlers处理方法
  5. 服务器设备日常维护与管理论文,浅谈设备管理与维护论文
  6. 动环监控系统接线图_机房动环监控系统报价
  7. 智能互联网之数据存储实践
  8. python路径规划仿真实验_【python实战】批量获得路径规划——高德地图API
  9. wps二次开发无法创建对象wps.application的解决方案
  10. linux分屏显示文件行数,linux常用命令集合1
  11. 联想服务器虚拟化解决方案,联想虚拟化解决方案
  12. GC root 解决了循环引用的垃圾回收问题
  13. 电脑如何远程控制挂机宝?影云挂机宝
  14. Python实现去除图片中的数字水印
  15. pythonSSL证书错误
  16. linux怎么撤销关机命令,一天一个Linux基础命令之关机命令shutdown
  17. 机器学习分支之一:强化学习
  18. cache line对内存访问的影响
  19. IMU参数对比(未完待续)
  20. (四)Bug的生命周期

热门文章

  1. 内网穿透--DevOps学习番外
  2. 利用MHT类型,免杀宏病毒
  3. 【100个 Unity实用技能】☀️ | Unity中设置 允许的最大帧数,锁定游戏的最大帧率(游戏锁帧)
  4. 【TypeScript】TS基础
  5. 使用光纤网络安装监控摄像头的6套方案
  6. Sentinel-2 L2A数据导入ENVI
  7. 第二代Xeon处理器上线 能提供机器学习运算效能
  8. 将png转换为bmp格式
  9. 计算机打不开guest用户,guest账户打不开 浅析win10系统guest账户打不开的解决方法...
  10. PDF 转换为 图片保存