LeetCode 450 删除二叉搜索树中的节点[dfs] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 450 删除二叉搜索树中的节点[dfs] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
非常容易的一道dfs题目,根据key的值判断是否在当前的根路径下,小了往左子树走,大了往右子树走,相等又有三个判断条件,只有右子树返回右子树,只有左子树返回左子树,都有就要将右子树最左子节点安插到根节点的左子树的上面,然后将根更换为右子树的根 ,代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr)
* TreeNode(int x) : val(x), left(nullptr), right(nullptr)
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right)
* ;
*/
class Solution
public:
TreeNode* deleteNode(TreeNode* root, int key)
// 根为空
if(root == nullptr) return nullptr;
// 根的值大了,往左子树找
else if(root->val > key) root->left = deleteNode(root->left, key);
else if(root->val < key) root->right = deleteNode(root->right, key);
// 找到key所在节点
else
if(root->left == nullptr) return root->right;
if(root->right == nullptr) return root->left;
TreeNode * node = root->right;
while(node->left)
node = node->left;
node->left = root->left;
root = root->right;
return root;
;
以上是关于LeetCode 450 删除二叉搜索树中的节点[dfs] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 树 - 删除二叉搜索树中的节点, leetcode 450
LeetCode Java刷题笔记— 450. 删除二叉搜索树中的节点
LeetCode 二叉树专项删除二叉搜索树中的节点(450)
Leetcode刷题Python450. 删除二叉搜索树中的节点