From 0f22ada3df0468334a45059a037ec6a7fa198d85 Mon Sep 17 00:00:00 2001 From: jinbudaily <18336218010@163.com> Date: Sun, 23 Jul 2023 18:56:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=200450.=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=BA=8C=E5=8F=89=E6=90=9C=E7=B4=A2=E6=A0=91=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E8=8A=82=E7=82=B9=20=E6=8E=92=E7=89=88=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0450.删除二叉搜索树中的节点.md | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/problems/0450.删除二叉搜索树中的节点.md b/problems/0450.删除二叉搜索树中的节点.md index 3d73598d..13599fd8 100644 --- a/problems/0450.删除二叉搜索树中的节点.md +++ b/problems/0450.删除二叉搜索树中的节点.md @@ -24,15 +24,15 @@ ![450.删除二叉搜索树中的节点](https://code-thinking-1253855093.file.myqcloud.com/pics/20201020171048265.png) -# 算法公开课 +## 算法公开课 -**《代码随想录》算法视频公开课:[调整二叉树的结构最难!| LeetCode:450.删除二叉搜索树中的节点](https://www.bilibili.com/video/BV1tP41177us?share_source=copy_web),相信结合视频在看本篇题解,更有助于大家对本题的理解**。 +**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[调整二叉树的结构最难!| LeetCode:450.删除二叉搜索树中的节点](https://www.bilibili.com/video/BV1tP41177us?share_source=copy_web),相信结合视频在看本篇题解,更有助于大家对本题的理解**。 -# 思路 +## 思路 搜索树的节点删除要比节点增加复杂的多,有很多情况需要考虑,做好心理准备。 -## 递归 +### 递归 递归三部曲: @@ -161,7 +161,7 @@ public: }; ``` -## 普通二叉树的删除方式 +### 普通二叉树的删除方式 这里我在介绍一种通用的删除,普通二叉树的删除方式(没有使用搜索树的特性,遍历整棵树),用交换值的操作来删除目标节点。 @@ -198,7 +198,7 @@ public: 这个代码是简短一些,思路也巧妙,但是不太好想,实操性不强,推荐第一种写法! -## 迭代法 +### 迭代法 删除节点的迭代法还是复杂一些的,但其本质我在递归法里都介绍了,最关键就是删除节点的操作(动画模拟的过程) @@ -246,7 +246,7 @@ public: }; ``` -# 总结 +## 总结 读完本篇,大家会发现二叉搜索树删除节点比增加节点复杂的多。 @@ -264,10 +264,10 @@ public: 迭代法其实不太容易写出来,所以如果是初学者的话,彻底掌握第一种递归写法就够了。 -# 其他语言版本 +## 其他语言版本 -## Java +### Java ```java class Solution { public TreeNode deleteNode(TreeNode root, int key) { @@ -323,7 +323,7 @@ class Solution { } ``` -## Python +### Python 递归法(版本一) ```python class Solution: @@ -411,7 +411,7 @@ class Solution: return root ``` -## Go +### Go ```Go // 递归版本 func deleteNode(root *TreeNode, key int) *TreeNode { @@ -497,7 +497,7 @@ func deleteNode(root *TreeNode, key int) *TreeNode { } ``` -## JavaScript +### JavaScript 递归 @@ -588,7 +588,7 @@ var deleteNode = function (root, key) { } ``` -## TypeScript +### TypeScript > 递归法: @@ -652,7 +652,7 @@ function deleteNode(root: TreeNode | null, key: number): TreeNode | null { }; ``` -## Scala +### Scala ```scala object Solution { @@ -682,7 +682,7 @@ object Solution { } ``` -## rust +### Rust ```rust impl Solution { @@ -720,3 +720,4 @@ impl Solution { +