【刷题DAY21】235, 701, 450.md

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

题目链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/

0x1 看到题目的第一想法

  • 和昨天236二叉树的最近公共祖先一样的做法

0x2 自己实现过程中遇到哪些困难

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 利用二叉搜索树的特性,可以简单一点
    • 二叉搜索树的p、q的公共祖先x必在[p, q]这个范围内

0x5 今日收获,记录一下自己的学习时长

  • 30min

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

题目链接:https://leetcode.cn/problems/insert-into-a-binary-search-tree/

0x1 看到题目的第一想法

0x2 自己实现过程中遇到哪些困难

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 利用二叉搜索树的特性
    • 只要遍历二叉搜索树,找到空节点 插入元素就可以

0x5 今日收获,记录一下自己的学习时长

  • 45min

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

题目链接:https://leetcode.cn/problems/delete-node-in-a-bst/submissions/399730045/

0x1 看到题目的第一想法

0x2 自己实现过程中遇到哪些困难

0x3 今日学习的文章链接,或者视频链接

0x4 看完代码随想录之后的想法

  • 二叉搜搜索树的删除比插入复杂
    • 第一种情况:没找到删除的节点,遍历到空节点直接返回了
    • 第二种情况:左右孩子都为空(叶子节点),直接删除节点, 返回NULL为根节点
    • 第三种情况:删除节点的左孩子为空,右孩子不为空,删除节点,右孩子补位,返回右孩子为根节点
    • 第四种情况:删除节点的右孩子为空,左孩子不为空,删除节点,左孩子补位,返回左孩子为根节点
    • 第五种情况:左右孩子节点都不为空,则将删除节点的左子树头结点(左孩子)放到删除节点的右子树的最左面节点的左孩子上,返回删除节点右孩子为新的根节点。

0x5 今日收获,记录一下自己的学习时长

  • 1.5h

待重点复习

450

总结

  • 利用二叉搜索树的特性