mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-02 04:31:55 +08:00
Update the symbols of the animations.
This commit is contained in:
@ -313,16 +313,16 @@ AVL 树的独特之处在于「旋转 Rotation」的操作,其可 **在不影
|
||||
|
||||
如下图所示(结点下方为「平衡因子」),从底至顶看,二叉树中首个失衡结点是 **结点 3**。我们聚焦在以该失衡结点为根结点的子树上,将该结点记为 `node` ,将其左子结点记为 `child` ,执行「右旋」操作。完成右旋后,该子树已经恢复平衡,并且仍然为二叉搜索树。
|
||||
|
||||
=== "Step 1"
|
||||
=== "<1>"
|
||||

|
||||
|
||||
=== "Step 2"
|
||||
=== "<2>"
|
||||

|
||||
|
||||
=== "Step 3"
|
||||
=== "<3>"
|
||||

|
||||
|
||||
=== "Step 4"
|
||||
=== "<4>"
|
||||

|
||||
|
||||
进而,如果结点 `child` 本身有右子结点(记为 `grandChild` ),则需要在「右旋」中添加一步:将 `grandChild` 作为 `node` 的左子结点。
|
||||
|
||||
@ -21,16 +21,16 @@ comments: true
|
||||
- 若 `cur.val > num` ,说明目标结点在 `cur` 的左子树中,因此执行 `cur = cur.left` ;
|
||||
- 若 `cur.val = num` ,说明找到目标结点,跳出循环并返回该结点即可;
|
||||
|
||||
=== "Step 1"
|
||||
=== "<1>"
|
||||

|
||||
|
||||
=== "Step 2"
|
||||
=== "<2>"
|
||||

|
||||
|
||||
=== "Step 3"
|
||||
=== "<3>"
|
||||

|
||||
|
||||
=== "Step 4"
|
||||
=== "<4>"
|
||||

|
||||
|
||||
二叉搜索树的查找操作和二分查找算法如出一辙,也是在每轮排除一半情况。循环次数最多为二叉树的高度,当二叉树平衡时,使用 $O(\log n)$ 时间。
|
||||
@ -188,16 +188,16 @@ comments: true
|
||||
2. 在树中递归删除结点 `nex` ;
|
||||
3. 使用 `nex` 替换待删除结点;
|
||||
|
||||
=== "Step 1"
|
||||
=== "<1>"
|
||||

|
||||
|
||||
=== "Step 2"
|
||||
=== "<2>"
|
||||

|
||||
|
||||
=== "Step 3"
|
||||
=== "<3>"
|
||||

|
||||
|
||||
=== "Step 4"
|
||||
=== "<4>"
|
||||

|
||||
|
||||
删除结点操作也使用 $O(\log n)$ 时间,其中查找待删除结点 $O(\log n)$ ,获取中序遍历后继结点 $O(\log n)$ 。
|
||||
|
||||
Reference in New Issue
Block a user