力扣算法刷题Day22|二叉树:二叉搜索树的最近公共祖先及其插入删除节点操作

文章探讨了在二叉搜索树中如何高效地寻找最近公共祖先,使用迭代法解决此类问题的重要性。作者提到了在递归过程中遇到返回值时应立即返回的策略。此外,还讨论了插入和删除节点的操作,其中插入可以通过迭代法和递归法结合实现,删除节点则需要考虑结构调整。文章强调了递归在某些情况下比迭代更直观易懂。
摘要由CSDN通过智能技术生成

力扣题目:#235. 二叉搜索树的最近公共祖先

刷题时长:15min

解题方法:迭代法

复杂度分析

  • 时间O(n) 
  • 空间O(1)

问题总结

  • 没能在找到答案的时候立即在递归中返回

本题收获

  • BST用迭代法yyds
  • 在递归函数有返回值的情况下:如果要搜索一条边,递归函数返回值不为空的时候,立刻返回,如果搜索整个树,直接用一个变量left、right接住返回值,这个left、right后序还有逻辑处理的需要,也就是后序遍历中处理中间节点的逻辑(也是回溯)
    • 本题就是标准的搜索一条边的写法,遇到递归函数的返回值,如果不为空,立刻返回
    • #236普通二叉树中需要左右子树的返回值后判断,所以是搜索整颗树

力扣题目:#701.二叉搜索树中的插入操作

刷题时长:10min

解题方法:迭代法

复杂度分析

  • 时间O(n)
  • 空间O(1)

问题总结

  • 循环未及时break

本题收获

  • 递归法+返回值
  • 迭代法可以加一个指针记录父节点,然后通过对比子节点的值大小,判断是左孩子还是右孩子

力扣题目:#450.删除二叉搜索树中的节点  

刷题时长:参考视频后10min

解题方法:递归+二分

复杂度分析

  • 时间O(n)
  • 空间O(n)

问题总结

  • 没看明白迭代法和普通二叉树案例

本题收获

  • 此题递归比迭代简单好理解,直接通过递归返回值删除节点,而不用额外判断删除节点是其父节点的左还是右孩子
  • 二叉搜索树添加节点只需要在叶子上添加就可以的,不涉及到结构的调整,而删除节点操作涉及到结构的调整
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值