var deleteNode = function(root, key) {
//没找到
if(root==null){
return root
}
//找到了
if(root.val==key){
//1,没有子节点
if(root.left==null&&root.right==null){
delete root
return null
}
//2,有左子节点
if(root.left==null){
let cur=root.right
delete root
return cur
}
//3,有右子节点
if(root.right==null){
let cur=root.left
delete root
return cur
}
//4,有两个节点,把左子树连接在右子树的左节点
if(root.left!==null&&root.right!==null){
let cur=root.right
while(cur.left){
cur=cur.left
}
cur.left=root.left
let temp=root.right
delete root
return temp
}
}
//递归子树查找
if(key>root.val){
root.right=deleteNode(root.right,key)
}
if(key<root.val){
root.left=deleteNode(root.left,key)
}
return root
};
力扣450. 删除二叉搜索树中的节点(JavaScript)
最新推荐文章于 2024-07-14 16:07:02 发布