文章目录

  • 235. 二叉搜索树的最近公共祖先
    • 思路
    • 代码
    • 困难
  • 701.二叉搜索树中的插入操作
    • 思路
    • 代码
  • 450.删除二叉搜索树中的节点
    • 思路
    • 代码
    • 困难
  • 今日收获

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

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

思路

不同于236普通二叉树,由于是二叉搜索树,只需要第一个遍历到小于q大于p的节点即可。使用只需要遍历一条边的递归方法,设置返回值,将递归函数return。
时间复杂度On

代码

func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {if root.Val>q.Val&&root.Val>p.Val{return lowestCommonAncestor(root.Left, p, q)}if root.Val<p.Val&&root.Val<q.Val{return lowestCommonAncestor(root.Right, p, q)}return root
}

困难

二叉搜索树特性。
只遍历一条边。


701.二叉搜索树中的插入操作

701.二叉搜索树中的插入操作

思路

由于怎么插入都可以,不考虑改变二叉树结构的插入方法,直接插入空节点。

代码

func insertIntoBST(root *TreeNode, val int) *TreeNode {if root==nil{root=&TreeNode{}root.Val = valreturn root}if root.Val<val{root.Right=insertIntoBST(root.Right,val)}else{root.Left=insertIntoBST(root.Left,val)}return root
}

450.删除二叉搜索树中的节点

450.删除二叉搜索树中的节点

思路

确定单层递归的逻辑
这里就把二叉搜索树中删除节点遇到的情况都搞清楚。

有以下五种情况:

第一种情况:没找到删除的节点,遍历到空节点直接返回了
找到删除的节点
第二种情况:左右孩子都为空(叶子节点),直接删除节点, 返回NULL为根节点
第三种情况:删除节点的左孩子为空,右孩子不为空,删除节点,右孩子补位,返回右孩子为根节点
第四种情况:删除节点的右孩子为空,左孩子不为空,删除节点,左孩子补位,返回左孩子为根节点
第五种情况:左右孩子节点都不为空,则将删除节点的左子树头结点(左孩子)放到删除节点的右子树的最左面节点的左孩子上,返回删除节点右孩子为新的根节点。
着重考虑第五种情况。
时间复杂度On

代码

func deleteNode(root *TreeNode, key int) *TreeNode {if root==nil{return nil}if root.Val==key{if root.Left==nil{return root.Right}if root.Right==nil{return root.Left}temp:=root.Rightpre:=tempfor temp!=nil{pre=temptemp=temp.Left}pre.Left=root.Leftreturn root.Right}if root.Val<key{root.Right=deleteNode(root.Right,key)}if root.Val>key{root.Left=deleteNode(root.Left,key)}return root
}

困难

着重考虑删除节点的第五种情况。

temp:=root.Rightpre:=tempfor temp!=nil{pre=temptemp=temp.Left}pre.Left=root.Leftreturn root.Right

今日收获

了解了二叉搜索树只遍历一条边的递归方式。
了解了二叉搜索树的插入和删除

二叉树part8 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点相关推荐

  1. 代码随想录算法训练营第22天 二叉树 java :235. 二叉树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点

    文章目录 LeetCode 236. 二叉树的最近公共祖先 题目讲解 思路 LeetCode 701.二叉搜索树中的插入操作 题目讲解 思路 LeetCode 450.删除二叉搜索树中的节点 题目讲解 ...

  2. 【LeetCode】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

    [LeetCode]剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 文章目录 [LeetCode]剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 一.迭代 二.递归 祖先的定义 ...

  3. leetcode 235. 二叉搜索树的最近公共祖先(Java版,树形dp套路)

    题目 原题地址:leetcode 235. 二叉搜索树的最近公共祖先 说明: 所有节点的值都是唯一的. p.q 为不同节点且均存在于给定的二叉搜索树中. 题解 关于 树形dp 套路,可以参考我的另一篇 ...

  4. [剑指offer]面试题第[68-1]题[Leedcode][JAVA][第235题][二叉搜索树的最近公共祖先][递归][BFS]

    [问题描述][第235题][二叉搜索树的最近公共祖先][简单] 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p. ...

  5. 二叉搜索树的最近公共祖先、二叉树的最近公共祖先

    目录 二叉搜索树的最近公共祖先(力扣:235) 二叉树的最近公共祖先(力扣:236) 二叉搜索树的最近公共祖先 题目 二叉搜索树的最近公共祖先(力扣:235) 给定一个二叉搜索树, 找到该树中两个指定 ...

  6. ( “树” 之 BST) 235. 二叉搜索树的最近公共祖先 ——【Leetcode每日一题】

    二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点. 二叉查找树中序遍历有序. 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. ...

  7. LeetCode 235: 二叉搜索树的最近公共祖先

    二叉搜索树的最近公共祖先 题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一 ...

  8. 二叉树(二):判断是不是二叉搜索树、判断是不是完全二叉树、判断是不是平衡二叉树、二叉搜索树的最近公共祖先、在二叉搜索树中找到两个节点的最近公共祖先、序列化二叉树、重建二叉树、输出二叉树的右视图

    目录 一.判断是不是二叉搜索树 1.1 题目 1.2 题解 二.判断是不是完全二叉树 2.1 题目 2.2 题解 三.判断是不是平衡二叉树 3.1 题目 3.2 题解 四.二叉搜索树的最近公共祖先 4 ...

  9. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

    [问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...

最新文章

  1. SAP MM 盘点流程中上不了台面却很实用的方案建议
  2. 微软开源 Quantum Katas,领先的量子编程解决方案
  3. ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型(包括类别编码+属性重要程度排序)问题(实数值年龄预测)
  4. boost::polygon模块实现自定义点相关的测试程序
  5. Linux-No.04 Linux 设置定时任务发送邮件功能
  6. python3小游戏源代码_Python3制作仿“FlappyBird”小游戏|python3教程|python入门|python教程...
  7. UVA 662 Fast Food
  8. instagram技术_Instagram9位科技女孩进行技术采访的主要技巧
  9. 独家披露51CTO被黑过程:数据库已小范围流传
  10. 推荐几本lisp的书.
  11. 解决SqlServer添加维护计划时出现“代理XP组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用……”
  12. then是java关键字吗_then是java关键字吗
  13. NLP算法工程师,基本技术能力要求有哪些?
  14. 验证OpenVino时,找不到指定模块的解决
  15. html怎么实现聊天界面设计,纯css制作仿微信聊天页面
  16. 微信公众平台接口调试工具——蓝牙设备调试篇
  17. 程序设计天梯赛2021年选拔 L2-4红豆 (什么完全树给定后序遍历)
  18. 混合波束成形matlab,探索 5G 系统的混合波束成形架构
  19. 【临沂seo首选】增长|聊聊抖音SEO
  20. Template for Publisher and Subscriber

热门文章

  1. BBSXP最新漏洞 简单注入检测 万能密码
  2. 华为云服务-运维篇-负载均衡介绍与平台算法使用
  3. 触动精灵手游脚本制作视频
  4. Ubuntu 安装.bin文件
  5. 跨领域推荐,实现个性化服务的技术途径
  6. 统计学习第四弹--随机变量的概率分布
  7. MySQL SELECT COUNT 一对多关联查询去重
  8. try-catch-finally的用法之finally(总被执行)
  9. 工作更需要一个踏实的人
  10. 浅谈IDC网管软件的特殊性