首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LeetCode 450: 删除二叉搜索树中的节点 Delete Node in a BST

题目: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。...Given a root node reference of a BST and a key, delete the node with the given key in the BST....5 / \ 2 6 \ \ 4 7 解题思路: 待删除节点在二叉树中的三种情况有: 如果目标节点没有子节点,我们可以直接移除该目标节点。...另外二叉搜索树的中序遍历结果为从小到大顺序排列的; 删除节点如果不是叶子节点时, 则应把该节点的值替换为其右子树中最小的一个节点值 (删除节点的后驱节点); 删除节点如果不是叶子节点且无右子树时, 则应把该节点的值替换为其左子树中最大的一个节点值...(删除节点的前驱节点), 并在子树中递归删除刚刚替换的节点 你会发现, 二叉搜索树最小节点为该树的最左叶子; 最大节点为该树的最右叶子, 即: 如果 key > root.val,说明要删除的节点在右子树

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    删除链表中的节点

    题目描述 难度级别:简单 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。...示例 2: 输入:head = [4,5,1,9], node = 1 输出:[4,5,9] 解释:给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9....提示: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节点。 不要从你的函数中返回任何结果。...解题思路 题目中待传递给当前函数的实参node,它是链表中的某一个待删除的节点,然后从链表中删除这个节点。...这里因为待传入的实参没有完整的链表,所以无法获取到之前节点,所以无法修改前一个节点的next指向。这时需要的是将要删除节点的值替换为它的下一个节点的值,之后要删除这个节点的next指向为下下一项。

    2.4K00

    2 删除链表中的节点

    复习链表的插入 链表的一个节点是由数据域和指针域构成,指针域的地址值为下个元素的地址。那么我们需要插入或者删除一个元素怎么处理呢? ? 先查看原始链表结构,准备将结点x插入链表中。 ?...复习链表的删除 上面简单介绍了带头结点的链表,在删除处理的时候同样适用,所以我们以后就直接采用带头结点的链表讲解。下面直接看看删除节点图。 ?...1 Leetcode237 删除链表的节点 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。...说明: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节点。 不要从你的函数中返回任何结果。 先思考一分钟哟! 效果更好哈!...目标还是删除5,最后结果为[4,1,9]。我们把需要删除的5结点的后面节点1赋值给它,如下图8. ?

    1.3K20

    237 删除链表中的节点

    01 题目信息 题目地址: https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 请编写一个函数,使其可以删除某个链表中给定的(非末尾...传入函数的唯一参数为 要被删除的节点 。 现有一个链表 -- head = [4,5,1,9],它可以表示为: ?...提示: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节点。 不要从你的函数中返回任何结果。...x) { val = x; } } 现在它传一条链表的一个节点,删除这个节点。...值为4的节点是指向5这个节点的,删除5节点就是让4节点直接指向1节点就可以了,但我们拿不到4节点所以不能改变它的next属性的值。那么我们只能改它指向的节点把它的值由5改成1再指向9 ?

    1.3K10

    删除链表中的重复节点.

    前言 在一个排序的链表中,存在重复的节点,如何删除链表中重复的节点并返回删除后的链表头指针?例如:1->2->3->3->4->4->5,处理后为: 1->2->5。...本文将分享这个问题的解决思路与实现代码,欢迎各位感兴趣的开发者阅读本文。 常规思路 根据题意,我们可以知道链表中的元素是排好序的。如果节点重复的话,当前节点一定与下一个节点相同。...那么,我们只需要从第一个元素开始向后比对每个元素,修改节点的指针至不重复的节点,即可完成对重复节点的删除。...20220226224625702 实现代码 接下来,我们将上述思路转换为代码,如下所示: /** * 删除链表中的重复节点 * @param pHead 链表头节点 */ deleteDuplicatesNode...* * 删除链表中的重复节点(递归解法) * @param pHead 链表头节点 */ deleteDuplicatesNodeForRecursion(pHead: ListNode

    2.8K40

    Swift 删除链表中的节点 - LeetCode

    LeetCode 题目: 删除链表中的节点 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。...= 4,5,1,9,它可以表示为: 4 -> 5 -> 1 -> 9 示例1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点...,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9....示例2: 输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9...说明: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节点。 不要从你的函数中返回任何结果。

    1.3K40

    Leetcode No.237 删除链表中的节点

    一、题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。...示例 2: 输入:head = [4,5,1,9], node = 1 输出:[4,5,9] 解释:给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 ->...二、解题思路 从链表里删除一个节点 node 的最常见方法是修改之前节点的 next 指针,使其指向之后的节点。...我们无法访问我们想要删除的节点 之前 的节点,因此我们始终不能修改该节点的 next 指针。 换个思路,我们可以将想要删除的节点的值替换为它后面节点中的值,然后删除它之后的节点。...因为我们知道要删除的节点不是列表的末尾,所以我们可以保证这种方法是可行的。

    42040

    删除链表中的节点

    题目信息 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。...示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,调用函数后,该链表应变为 4 -> 1 -> 9....示例 2: 输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,调用函数后,该链表应变为 4 -> 5 -> 9....说明: 链表至少包含两个节点。 链表中所有节点的值都是唯一的。 给定的节点为非末尾节点并且一定是链表中的一个有效节点。 不要从你的函数中返回任何结果。...解题 只给定了要删除的节点,无法得知上一个的next指针 直接交换要删节点的值与其next存的val 删除其next节点即可 /** * Definition for singly-linked

    41020
    领券