/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public TreeNode deleteNode(TreeNode root, int key) {
root = delete(root,key);
return root;
}
public TreeNode delete(TreeNode root, int val){
if(root == null) return null;
if(root.val > val){
root.left = delete(root.left,val);
}else if(root.val < val){
root.right = delete(root.right,val);
}else{
if(root.left == null) return root.right;
if(root.right == null) return root.left;
TreeNode cur = root.right;
while(cur.left != null){
cur = cur.left;
}
cur.left = root.left;
TreeNode tmp = root;
root = root.right;
return root;
}
return root;
}
}
代码随想录——450. 删除二叉搜索树中的节点
最新推荐文章于 2024-10-01 22:12:42 发布
该代码实现了一个删除二叉搜索树中指定值节点的方法。首先,通过比较节点值与目标值来遍历树,然后在找到目标节点时处理删除操作。如果目标节点无子节点,直接删除;如果有两个子节点,找到右子树的最小节点替换目标节点,并删除原右子树的最小节点。
摘要由CSDN通过智能技术生成