[LeetCode] 450. Delete Node in a BST
来源:互联网 发布:淘宝论坛app官方下载 编辑:程序博客网 时间:2024/06/15 15:17
Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return the root node reference (possibly updated) of the BST.Basically, the deletion can be divided into two stages:1. Search for a node to remove.2. If the node is found, delete the node.Note: Time complexity should be O(height of tree).Example:
root = [5,3,6,2,4,null,7]key = 3 5 / \ 3 6 / \ \2 4 7Given key to delete is 3\. So we find the node with value 3 and delete it.One valid answer is [5,4,6,2,null,null,7], shown in the following BST. 5 / \ 4 6 / \2 7Another valid answer is [5,2,6,null,4,null,7]. 5 / \ 2 6 \ \ 4 7
TreeNode* deleteNode(TreeNode* root, int key) { if (root == nullptr) return nullptr; if (key < root->val) { root->left = deleteNode(root->left, key); } else if (key > root->val) { root->right = deleteNode(root->right, key); } else { if (root->right) { TreeNode **pparent = &root->right; TreeNode *ceil = root->right; while (ceil->left) { pparent = &ceil->left; ceil = ceil->left; } root->val = ceil->val; *pparent = ceil->right; } else if (root->left){ TreeNode **pparent = &root->left; TreeNode *ceil = root->left; while (ceil->right) { pparent = &ceil->right; ceil = ceil->right; } root->val = ceil->val; *pparent = ceil->left; } else { root = nullptr; } } return root; }
阅读全文
0 0
- LeetCode 450. Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- Leetcode-450. Delete Node in a BST
- 【LeetCode】 450. Delete Node in a BST
- [LeetCode]450. Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- LeetCode 450.Delete Node in a BST
- leetcode 450. Delete Node in a BST
- [LeetCode] 450. Delete Node in a BST
- leetcode-450.delete a node in a BST
- [LeetCode]Delete Node in a BST
- [leetcode] 450. Delete Node in a BST 解题报告
- LeetCode Peoject 450.Delete Node in a BST
- Leetcode 450. Delete Node in a BST (Medium) (cpp)
- [leetCode刷题笔记]450. Delete Node in a BST
- [Leetcode] 450. Delete Node in a BST 解题报告
- [hard]450. Delete Node in a BST
- 450. Delete Node in a BST
- 清除浮动的方法
- Android点击View改变字体颜色和边框背景
- 有趣的JavaScript(一)---let、const与var命令的区别
- 伪类和伪元素的区别
- 查看基于Android 系统单个进程内存和CPU使用情况的几种方法
- [LeetCode] 450. Delete Node in a BST
- 在C语言中什么是语义错误??
- flush privileges 什么意思?
- 求SG函数的值(模板)
- 抓包工具fiddler安装和使用
- 10 分钟理解 PyTorch 代码
- 内存溢出 out of memory与内存泄露 memory leak
- 位操作-leetcode 338 Counting Bits
- 安装Python