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

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

文档讲解:代码随想录

视频讲解:二叉搜索树找祖先就有点不一样了!| 235. 二叉搜索树的最近公共祖先_哔哩哔哩_bilibili

1.  只能想到普通的二叉树搜索最近的公共祖先的方法,不知道如何利用二叉搜索树的性质。

2. 二叉搜索树根节点的值大于左子树的所有值小于右子树的所有值,从上到下便利到第一个位于p,q区间内的说明p,q位于当前便利节点的两侧,根据二叉树的图形,当前节点一定是p,q最近的公共祖先节点,因为如果不是接下来向左或向右都会错过成为另一个节点的祖先的机会,所以返回这个节点即可。

3. 单层递归逻辑中,当p,q的值都大于或都小于当前遍历节点的值时,依次递归右子树或左子树后接收返回值需要判断是否为null再返回,递归下一层时漏写参数。

4. 单层递归逻辑中,当p,q的值都大于或都小于当前遍历节点的值时,依次递归右子树或左子树后接收返回值需要判断是否为null再返回,递归下一层时再次注意不要漏写参数。用了一天的零散时间。

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

文档讲解:代码随想录

视频讲解:原来这么简单? | LeetCode:701.二叉搜索树中的插入操作_哔哩哔哩_bilibili

1. 根据二叉搜索树的性质,无论插入的数值是啥,都可以通过遍历到一个左右节点为null的节点进行插入。

2. 插入是在二叉搜索树的叶子节点进行插入操作。

3. 迭代法中没有考虑二叉搜索树为空的情况以及当前遍历节点左右子树其中一个为空另一个不为空的情况;递归法终止条件是返回一个新创建的节点。

4. 迭代法中没有考虑二叉搜索树为空的情况以及当前遍历节点左右子树其中一个为空另一个不为空的情况;递归法终止条件是返回一个新创建的节点。用了一天的零散时间。

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

文档讲解:代码随想录

视频讲解:调整二叉树的结构最难!| LeetCode:450.删除二叉搜索树中的节点_哔哩哔哩_bilibili

1. 不知道咋做。

2. 递归的返回值是删除节点后的根节点,删除二叉搜索树中的节点分几种情况,第一种是待删除的节点为叶子节点,这种直接将null返回到上层递归进行处理即可,如果删除节点不是叶子节点且左右子树中一个为空一个不为空,则返回不为空的那一个(作为删除待删除节点后到二叉搜索树的根节点)到上一层递归中进行处理。如果待删除节点左右子树不为空,则先定义一个临时指针,初始值为当前指针的右子树位置,依次往左子树左边遍历,直到临时指针的左指针为null时暂停,将之前遍历的指针(临时指针的初始位置)的左子树放置到临时指针的右子树位置,返回之前遍历的指针(临时指针的位置)。

3. 递归的返回值是删除节点后的根节点,删除二叉搜索树中的节点分几种情况,第一种是待删除的节点为叶子节点,这种直接将null返回到上层递归进行处理即可,如果删除节点不是叶子节点且左右子树中一个为空一个不为空,则返回不为空的那一个(作为删除待删除节点后到二叉搜索树的根节点)到上一层递归中进行处理。如果待删除节点左右子树不为空,则先定义一个临时指针,初始值为当前指针的右子树位置,依次往左子树左边遍历,直到临时指针的左指针为null时暂停,将之前遍历的指针(临时指针的初始位置)的左子树放置到临时指针的右子树位置,返回之前遍历的指针(临时指针的位置);递归函数内部再次递归时漏写参数。

4. 递归的返回值是删除节点后的根节点,删除二叉搜索树中的节点分几种情况,第一种是待删除的节点为叶子节点,这种直接将null返回到上层递归进行处理即可,如果删除节点不是叶子节点且左右子树中一个为空一个不为空,则返回不为空的那一个(作为删除待删除节点后到二叉搜索树的根节点)到上一层递归中进行处理。如果待删除节点左右子树不为空,则先定义一个临时指针,初始值为当前指针的右子树位置,依次往左子树左边遍历,直到临时指针的左指针为null时暂停,将之前遍历的指针(临时指针的初始位置)的左子树放置到临时指针的右子树位置,返回之前遍历的指针(临时指针的位置);递归函数内部再次递归时注意不要漏写参数。用了两天的零散时间。

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值