用时:30min
题目分两个部分需要解决,搜索和删除
搜索部分就是找到节点,可以根据二叉搜索树的性质来找到需要的节点
删除分三种情况
- 只有左孩子,用左孩子代替
- 只有右孩子,用右孩子代替
- 都没有,则赋值为null ( 由于前面有递归赋值,所以这边可以成功
- 都有,则储存左孩子后,用右孩子代替,然后找到左孩子在右边的位置
1 | var deleteNode = function(root, key) { |
需要注意的点
- 考虑节点不存在的情况
- 删除一个节点的方法,可以给左(右 节点赋值为递归的返回值