450. Delete Node in a BST
来源:互联网 发布:seo外链 编辑:程序博客网 时间:2024/06/05 09:06
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:
- Search for a node to remove.
- 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
思路:递归找到要删除的节点root,然后在右子树root.right中找一个最小的node(也可以在左子树找最大的)minNode,然后把root.left放到minNode.left
package l450;public class Solution { public TreeNode deleteNode(TreeNode root, int key) { if(root == null)return root; if(root.val < key) root.right = deleteNode(root.right, key); else if(root.val > key)root.left = deleteNode(root.left, key); else { if(root.left == null)return root.right; if(root.right == null)return root.left; // find right smallest TreeNode rigthSmallest = root.right; while(rigthSmallest.left != null)rigthSmallest = rigthSmallest.left; // change structure of tree rigthSmallest.left = root.left; return root.right; } return root; }}
阅读全文
0 0
- [hard]450. Delete Node in a BST
- 450. Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- 450. Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- Leetcode-450. Delete Node in a BST
- 450. Delete Node in a BST
- 【LeetCode】 450. Delete Node in a BST
- [LeetCode]450. Delete Node in a BST
- 450. Delete Node in a BST
- 450. Delete Node in a BST**
- 450. Delete Node in a BST
- 450. Delete Node in a BST
- LeetCode 450. Delete Node in a BST
- LeetCode 450.Delete Node in a BST
- 450. Delete Node in a BST
- leetcode 450. Delete Node in a BST
- 450. Delete Node in a BST
- ASP.NET MVC动作过滤器
- python基础之dict
- Hive安装—本地derby模式
- ASP.NET MVC资源文件多语言实现方式
- LeetCode 23 Merge k Sorted Lists
- 450. Delete Node in a BST
- matplotlib subplots 设置每个子图的x轴的标号
- DBCA UnsatisfiedLinkError exception loading native library: njni11
- elasticsearch遇到的问题
- 6.css基础
- 数据库主键的生成方式介绍
- 7.导入方式
- 百度编辑器(ueditor)上传视频二次调用丢失链接的解决方法
- python 多线程互斥锁