@@ -1905,7 +1905,7 @@
< span class = "md-ellipsis" >
8.3 Top-K 问题
8.3 Top-k 问题
< / span >
@@ -3767,16 +3767,16 @@
<!-- Page content -->
< h1 id = "75-avl" > 7.5 AVL 树 *< a class = "headerlink" href = "#75-avl" title = "Permanent link" > ¶ < / a > < / h1 >
< p > 在“二叉搜索树”章节中, 我们提到,在多次插入和删除操作后,二叉搜索树可能退化为链表。在这种情况下,所有操作的时间复杂度将从 < span class = "arithmatex" > \(O(\log n)\)< / span > 恶 化为 < span class = "arithmatex" > \(O(n)\)< / span > 。< / p >
< p > 在“二叉搜索树”章节中我们提到,在多次插入和删除操作后,二叉搜索树可能退化为链表。在这种情况下,所有操作的时间复杂度将从 < span class = "arithmatex" > \(O(\log n)\)< / span > 劣 化为 < span class = "arithmatex" > \(O(n)\)< / span > 。< / p >
< p > 如图 7-24 所示,经过两次删除节点操作,这棵二叉搜索树便会退化为链表。< / p >
< p > < a class = "glightbox" href = "../avl_tree.assets/avltree_degradation_from_removing_node.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "AVL 树在删除节点后发生退化" class = "animation-figure" src = "../avl_tree.assets/avltree_degradation_from_removing_node.png" / > < / a > < / p >
< p align = "center" > 图 7-24 AVL 树在删除节点后发生退化 < / p >
< p > 再例如,在图 7-25 所示的完美二叉树中插入两个节点后,树将严重向左倾斜,查找操作的时间复杂度也随之恶 化。< / p >
< p > 再例如,在图 7-25 所示的完美二叉树中插入两个节点后,树将严重向左倾斜,查找操作的时间复杂度也随之劣 化。< / p >
< p > < a class = "glightbox" href = "../avl_tree.assets/avltree_degradation_from_inserting_node.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "AVL 树在插入节点后发生退化" class = "animation-figure" src = "../avl_tree.assets/avltree_degradation_from_inserting_node.png" / > < / a > < / p >
< p align = "center" > 图 7-25 AVL 树在插入节点后发生退化 < / p >
< p > 1962 年 G. M. Adelson-Velsky 和 E. M. Landis 在论文 " An algorithm for the organization of information" 中提出了「AVL 树」。论文中详细描述了一系列操作,确保在持续添加和删除节点后,AVL 树不会退化,从而使得各种操作的时间复杂度保持在 < span class = "arithmatex" > \(O(\log n)\)< / span > 级别。换句话说,在需要频繁进行增删查改操作的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。< / p >
< p > 1962 年 G. M. Adelson-Velsky 和 E. M. Landis 在论文“ An algorithm for the organization of information” 中提出了「AVL 树」。论文中详细描述了一系列操作,确保在持续添加和删除节点后,AVL 树不会退化,从而使得各种操作的时间复杂度保持在 < span class = "arithmatex" > \(O(\log n)\)< / span > 级别。换句话说,在需要频繁进行增删查改操作的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。< / p >
< h2 id = "751-avl" > 7.5.1 AVL 树常见术语< a class = "headerlink" href = "#751-avl" title = "Permanent link" > ¶ < / a > < / h2 >
< p > AVL 树既是二叉搜索树也是平衡二叉树,同时满足这两类二叉树的所有性质,因此也被称为「平衡二叉搜索树 balanced binary search tree」。< / p >
< h3 id = "1" > 1. 节点高度< a class = "headerlink" href = "#1" title = "Permanent link" > ¶ < / a > < / h3 >
@@ -3947,7 +3947,7 @@
< / div >
< / div >
< / div >
< p > “节点高度”是指从该节点到其 最远叶节点的距离,即所经过的“边”的数量。需要特别注意的是,叶节点的高度为 < span class = "arithmatex" > \(0\)< / span > ,而空节点的高度为 < span class = "arithmatex" > \(-1\)< / span > 。我们将创建两个工具函数,分别用于获取和更新节点的高度:< / p >
< p > “节点高度”是指从该节点到它的 最远叶节点的距离,即所经过的“边”的数量。需要特别注意的是,叶节点的高度为 < span class = "arithmatex" > \(0\)< / span > ,而空节点的高度为 < span class = "arithmatex" > \(-1\)< / span > 。我们将创建两个工具函数,分别用于获取和更新节点的高度:< / p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "2:12" > < input checked = "checked" id = "__tabbed_2_1" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_2" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_3" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_4" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_5" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_6" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_7" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_8" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_9" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_10" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_11" name = "__tabbed_2" type = "radio" / > < input id = "__tabbed_2_12" name = "__tabbed_2" type = "radio" / > < div class = "tabbed-labels" > < label for = "__tabbed_2_1" > Python< / label > < label for = "__tabbed_2_2" > C++< / label > < label for = "__tabbed_2_3" > Java< / label > < label for = "__tabbed_2_4" > C#< / label > < label for = "__tabbed_2_5" > Go< / label > < label for = "__tabbed_2_6" > Swift< / label > < label for = "__tabbed_2_7" > JS< / label > < label for = "__tabbed_2_8" > TS< / label > < label for = "__tabbed_2_9" > Dart< / label > < label for = "__tabbed_2_10" > Rust< / label > < label for = "__tabbed_2_11" > C< / label > < label for = "__tabbed_2_12" > Zig< / label > < / div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
@@ -4311,9 +4311,9 @@
< / div >
< p align = "center" > 图 7-26 右旋操作步骤 < / p >
< p > 如图 7-27 所示,当节点 < code > child< / code > 有右子节点(记为 < code > grandC hild< / code > )时,需要在右旋中添加一步:将 < code > grandC hild< / code > 作为 < code > node< / code > 的左子节点。< / p >
< p > < a class = "glightbox" href = "../avl_tree.assets/avltree_right_rotate_with_grandchild.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "有 grandC hild 的右旋操作" class = "animation-figure" src = "../avl_tree.assets/avltree_right_rotate_with_grandchild.png" / > < / a > < / p >
< p align = "center" > 图 7-27 有 grandC hild 的右旋操作 < / p >
< p > 如图 7-27 所示,当节点 < code > child< / code > 有右子节点(记为 < code > grand_c hild< / code > )时,需要在右旋中添加一步:将 < code > grand_c hild< / code > 作为 < code > node< / code > 的左子节点。< / p >
< p > < a class = "glightbox" href = "../avl_tree.assets/avltree_right_rotate_with_grandchild.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "有 grand_c hild 的右旋操作" class = "animation-figure" src = "../avl_tree.assets/avltree_right_rotate_with_grandchild.png" / > < / a > < / p >
< p align = "center" > 图 7-27 有 grand_c hild 的右旋操作 < / p >
< p > “向右旋转”是一种形象化的说法,实际上需要通过修改节点指针来实现,代码如下所示:< / p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "5:12" > < input checked = "checked" id = "__tabbed_5_1" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_2" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_3" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_4" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_5" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_6" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_7" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_8" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_9" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_10" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_11" name = "__tabbed_5" type = "radio" / > < input id = "__tabbed_5_12" name = "__tabbed_5" type = "radio" / > < div class = "tabbed-labels" > < label for = "__tabbed_5_1" > Python< / label > < label for = "__tabbed_5_2" > C++< / label > < label for = "__tabbed_5_3" > Java< / label > < label for = "__tabbed_5_4" > C#< / label > < label for = "__tabbed_5_5" > Go< / label > < label for = "__tabbed_5_6" > Swift< / label > < label for = "__tabbed_5_7" > JS< / label > < label for = "__tabbed_5_8" > TS< / label > < label for = "__tabbed_5_9" > Dart< / label > < label for = "__tabbed_5_10" > Rust< / label > < label for = "__tabbed_5_11" > C< / label > < label for = "__tabbed_5_12" > Zig< / label > < / div >
@@ -4522,9 +4522,9 @@
< p > < a class = "glightbox" href = "../avl_tree.assets/avltree_left_rotate.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "左旋操作" class = "animation-figure" src = "../avl_tree.assets/avltree_left_rotate.png" / > < / a > < / p >
< p align = "center" > 图 7-28 左旋操作 < / p >
< p > 同理,如图 7-29 所示,当节点 < code > child< / code > 有左子节点(记为 < code > grandC hild< / code > )时,需要在左旋中添加一步:将 < code > grandC hild< / code > 作为 < code > node< / code > 的右子节点。< / p >
< p > < a class = "glightbox" href = "../avl_tree.assets/avltree_left_rotate_with_grandchild.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "有 grandC hild 的左旋操作" class = "animation-figure" src = "../avl_tree.assets/avltree_left_rotate_with_grandchild.png" / > < / a > < / p >
< p align = "center" > 图 7-29 有 grandC hild 的左旋操作 < / p >
< p > 同理,如图 7-29 所示,当节点 < code > child< / code > 有左子节点(记为 < code > grand_c hild< / code > )时,需要在左旋中添加一步:将 < code > grand_c hild< / code > 作为 < code > node< / code > 的右子节点。< / p >
< p > < a class = "glightbox" href = "../avl_tree.assets/avltree_left_rotate_with_grandchild.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "有 grand_c hild 的左旋操作" class = "animation-figure" src = "../avl_tree.assets/avltree_left_rotate_with_grandchild.png" / > < / a > < / p >
< p align = "center" > 图 7-29 有 grand_c hild 的左旋操作 < / p >
< p > 可以观察到,< strong > 右旋和左旋操作在逻辑上是镜像对称的,它们分别解决的两种失衡情况也是对称的< / strong > 。基于对称性,我们只需将右旋的实现代码中的所有的 < code > left< / code > 替换为 < code > right< / code > ,将所有的 < code > right< / code > 替换为 < code > left< / code > ,即可得到左旋的实现代码:< / p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "6:12" > < input checked = "checked" id = "__tabbed_6_1" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_2" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_3" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_4" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_5" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_6" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_7" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_8" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_9" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_10" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_11" name = "__tabbed_6" type = "radio" / > < input id = "__tabbed_6_12" name = "__tabbed_6" type = "radio" / > < div class = "tabbed-labels" > < label for = "__tabbed_6_1" > Python< / label > < label for = "__tabbed_6_2" > C++< / label > < label for = "__tabbed_6_3" > Java< / label > < label for = "__tabbed_6_4" > C#< / label > < label for = "__tabbed_6_5" > Go< / label > < label for = "__tabbed_6_6" > Swift< / label > < label for = "__tabbed_6_7" > JS< / label > < label for = "__tabbed_6_8" > TS< / label > < label for = "__tabbed_6_9" > Dart< / label > < label for = "__tabbed_6_10" > Rust< / label > < label for = "__tabbed_6_11" > C< / label > < label for = "__tabbed_6_12" > Zig< / label > < / div >
@@ -5183,7 +5183,7 @@
< a id = "__codelineno-72-6" name = "__codelineno-72-6" href = "#__codelineno-72-6" > < / a > < span class = "w" > < / span > < span class = "sd" > " " " 递归插入节点(辅助方法)" " " < / span >
< a id = "__codelineno-72-7" name = "__codelineno-72-7" href = "#__codelineno-72-7" > < / a > < span class = "k" > if< / span > < span class = "n" > node< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< a id = "__codelineno-72-8" name = "__codelineno-72-8" href = "#__codelineno-72-8" > < / a > < span class = "k" > return< / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-72-9" name = "__codelineno-72-9" href = "#__codelineno-72-9" > < / a > < span class = "c1" > # 1. 查找插入位置, 并插入节点< / span >
< a id = "__codelineno-72-9" name = "__codelineno-72-9" href = "#__codelineno-72-9" > < / a > < span class = "c1" > # 1. 查找插入位置并插入节点< / span >
< a id = "__codelineno-72-10" name = "__codelineno-72-10" href = "#__codelineno-72-10" > < / a > < span class = "k" > if< / span > < span class = "n" > val< / span > < span class = "o" > < < / span > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > val< / span > < span class = "p" > :< / span >
< a id = "__codelineno-72-11" name = "__codelineno-72-11" href = "#__codelineno-72-11" > < / a > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > left< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > insert_helper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-72-12" name = "__codelineno-72-12" href = "#__codelineno-72-12" > < / a > < span class = "k" > elif< / span > < span class = "n" > val< / span > < span class = "o" > > < / span > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > val< / span > < span class = "p" > :< / span >
@@ -5207,7 +5207,7 @@
< a id = "__codelineno-73-7" name = "__codelineno-73-7" href = "#__codelineno-73-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nf" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-73-8" name = "__codelineno-73-8" href = "#__codelineno-73-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "k" > nullptr< / span > < span class = "p" > )< / span >
< a id = "__codelineno-73-9" name = "__codelineno-73-9" href = "#__codelineno-73-9" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-73-10" name = "__codelineno-73-10" href = "#__codelineno-73-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-73-10" name = "__codelineno-73-10" href = "#__codelineno-73-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-73-11" name = "__codelineno-73-11" href = "#__codelineno-73-11" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-73-12" name = "__codelineno-73-12" href = "#__codelineno-73-12" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-73-13" name = "__codelineno-73-13" href = "#__codelineno-73-13" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
@@ -5232,7 +5232,7 @@
< a id = "__codelineno-74-7" name = "__codelineno-74-7" href = "#__codelineno-74-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "nf" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-74-8" name = "__codelineno-74-8" href = "#__codelineno-74-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span >
< a id = "__codelineno-74-9" name = "__codelineno-74-9" href = "#__codelineno-74-9" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-74-10" name = "__codelineno-74-10" href = "#__codelineno-74-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-74-10" name = "__codelineno-74-10" href = "#__codelineno-74-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-74-11" name = "__codelineno-74-11" href = "#__codelineno-74-11" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-74-12" name = "__codelineno-74-12" href = "#__codelineno-74-12" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-74-13" name = "__codelineno-74-13" href = "#__codelineno-74-13" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > val< / span > < span class = "p" > )< / span >
@@ -5256,7 +5256,7 @@
< a id = "__codelineno-75-6" name = "__codelineno-75-6" href = "#__codelineno-75-6" > < / a > < span class = "cm" > /* 递归插入节点(辅助方法) */< / span >
< a id = "__codelineno-75-7" name = "__codelineno-75-7" href = "#__codelineno-75-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > InsertHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-75-8" name = "__codelineno-75-8" href = "#__codelineno-75-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "k" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "k" > new< / span > < span class = "w" > < / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-75-9" name = "__codelineno-75-9" href = "#__codelineno-75-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-75-9" name = "__codelineno-75-9" href = "#__codelineno-75-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-75-10" name = "__codelineno-75-10" href = "#__codelineno-75-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-75-11" name = "__codelineno-75-11" href = "#__codelineno-75-11" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > InsertHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-75-12" name = "__codelineno-75-12" href = "#__codelineno-75-12" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "nf" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
@@ -5282,7 +5282,7 @@
< a id = "__codelineno-76-8" name = "__codelineno-76-8" href = "#__codelineno-76-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "kc" > nil< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-76-9" name = "__codelineno-76-9" href = "#__codelineno-76-9" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "nx" > NewTreeNode< / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-76-10" name = "__codelineno-76-10" href = "#__codelineno-76-10" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-76-11" name = "__codelineno-76-11" href = "#__codelineno-76-11" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-76-11" name = "__codelineno-76-11" href = "#__codelineno-76-11" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-76-12" name = "__codelineno-76-12" href = "#__codelineno-76-12" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "p" > < < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Val< / span > < span class = "p" > .(< / span > < span class = "kt" > int< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-76-13" name = "__codelineno-76-13" href = "#__codelineno-76-13" > < / a > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Left< / span > < span class = "w" > < / span > < span class = "p" > =< / span > < span class = "w" > < / span > < span class = "nx" > t< / span > < span class = "p" > .< / span > < span class = "nx" > insertHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-76-14" name = "__codelineno-76-14" href = "#__codelineno-76-14" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "p" > > < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Val< / span > < span class = "p" > .(< / span > < span class = "kt" > int< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
@@ -5312,7 +5312,7 @@
< a id = "__codelineno-77-9" name = "__codelineno-77-9" href = "#__codelineno-77-9" > < / a > < span class = "k" > if< / span > < span class = "n" > node< / span > < span class = "p" > ==< / span > < span class = "kc" > nil< / span > < span class = "p" > {< / span >
< a id = "__codelineno-77-10" name = "__codelineno-77-10" href = "#__codelineno-77-10" > < / a > < span class = "k" > return< / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > x< / span > < span class = "p" > :< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-77-11" name = "__codelineno-77-11" href = "#__codelineno-77-11" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-77-12" name = "__codelineno-77-12" href = "#__codelineno-77-12" > < / a > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-77-12" name = "__codelineno-77-12" href = "#__codelineno-77-12" > < / a > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-77-13" name = "__codelineno-77-13" href = "#__codelineno-77-13" > < / a > < span class = "k" > if< / span > < span class = "n" > val< / span > < span class = "o" > < < / span > < span class = "n" > node< / span > < span class = "p" > !.< / span > < span class = "n" > val< / span > < span class = "p" > {< / span >
< a id = "__codelineno-77-14" name = "__codelineno-77-14" href = "#__codelineno-77-14" > < / a > < span class = "n" > node< / span > < span class = "p" > ?.< / span > < span class = "kr" > left< / span > < span class = "p" > =< / span > < span class = "n" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > :< / span > < span class = "n" > node< / span > < span class = "p" > ?.< / span > < span class = "kr" > left< / span > < span class = "p" > ,< / span > < span class = "n" > val< / span > < span class = "p" > :< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-77-15" name = "__codelineno-77-15" href = "#__codelineno-77-15" > < / a > < span class = "p" > }< / span > < span class = "k" > else< / span > < span class = "k" > if< / span > < span class = "n" > val< / span > < span class = "o" > > < / span > < span class = "n" > node< / span > < span class = "p" > !.< / span > < span class = "n" > val< / span > < span class = "p" > {< / span >
@@ -5337,7 +5337,7 @@
< a id = "__codelineno-78-6" name = "__codelineno-78-6" href = "#__codelineno-78-6" > < / a > < span class = "cm" > /* 递归插入节点(辅助方法) */< / span >
< a id = "__codelineno-78-7" name = "__codelineno-78-7" href = "#__codelineno-78-7" > < / a > < span class = "err" > #< / span > < span class = "nx" > insertHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-78-8" name = "__codelineno-78-8" href = "#__codelineno-78-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nx" > TreeNode< / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-78-9" name = "__codelineno-78-9" href = "#__codelineno-78-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-78-9" name = "__codelineno-78-9" href = "#__codelineno-78-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-78-10" name = "__codelineno-78-10" href = "#__codelineno-78-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "err" > #< / span > < span class = "nx" > insertHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-78-11" name = "__codelineno-78-11" href = "#__codelineno-78-11" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-78-12" name = "__codelineno-78-12" href = "#__codelineno-78-12" > < / a > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > right< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "err" > #< / span > < span class = "nx" > insertHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > right< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
@@ -5359,7 +5359,7 @@
< a id = "__codelineno-79-6" name = "__codelineno-79-6" href = "#__codelineno-79-6" > < / a > < span class = "cm" > /* 递归插入节点(辅助方法) */< / span >
< a id = "__codelineno-79-7" name = "__codelineno-79-7" href = "#__codelineno-79-7" > < / a > < span class = "nx" > insertHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > TreeNode< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > number< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "nx" > TreeNode< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-79-8" name = "__codelineno-79-8" href = "#__codelineno-79-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "ow" > new< / span > < span class = "w" > < / span > < span class = "nx" > TreeNode< / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-79-9" name = "__codelineno-79-9" href = "#__codelineno-79-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-79-9" name = "__codelineno-79-9" href = "#__codelineno-79-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-79-10" name = "__codelineno-79-10" href = "#__codelineno-79-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-79-11" name = "__codelineno-79-11" href = "#__codelineno-79-11" > < / a > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > insertHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-79-12" name = "__codelineno-79-12" href = "#__codelineno-79-12" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
@@ -5384,7 +5384,7 @@
< a id = "__codelineno-80-6" name = "__codelineno-80-6" href = "#__codelineno-80-6" > < / a > < span class = "cm" > /* 递归插入节点(辅助方法) */< / span >
< a id = "__codelineno-80-7" name = "__codelineno-80-7" href = "#__codelineno-80-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-80-8" name = "__codelineno-80-8" href = "#__codelineno-80-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-80-9" name = "__codelineno-80-9" href = "#__codelineno-80-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-80-9" name = "__codelineno-80-9" href = "#__codelineno-80-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-80-10" name = "__codelineno-80-10" href = "#__codelineno-80-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-80-11" name = "__codelineno-80-11" href = "#__codelineno-80-11" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-80-12" name = "__codelineno-80-12" href = "#__codelineno-80-12" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
@@ -5409,7 +5409,7 @@
< a id = "__codelineno-81-7" name = "__codelineno-81-7" href = "#__codelineno-81-7" > < / a > < span class = "k" > fn< / span > < span class = "nf" > insert_helper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > : < span class = "nc" > OptionTreeNodeRc< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > : < span class = "kt" > i32< / span > < span class = "p" > )< / span > < span class = "w" > < / span > -> < span class = "nc" > OptionTreeNodeRc< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-81-8" name = "__codelineno-81-8" href = "#__codelineno-81-8" > < / a > < span class = "w" > < / span > < span class = "k" > match< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-81-9" name = "__codelineno-81-9" href = "#__codelineno-81-9" > < / a > < span class = "w" > < / span > < span class = "nb" > Some< / span > < span class = "p" > (< / span > < span class = "k" > mut< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > => < / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-81-10" name = "__codelineno-81-10" href = "#__codelineno-81-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-81-10" name = "__codelineno-81-10" href = "#__codelineno-81-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-81-11" name = "__codelineno-81-11" href = "#__codelineno-81-11" > < / a > < span class = "w" > < / span > < span class = "k" > match< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-81-12" name = "__codelineno-81-12" href = "#__codelineno-81-12" > < / a > < span class = "w" > < / span > < span class = "kd" > let< / span > < span class = "w" > < / span > < span class = "n" > node_val< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > borrow< / span > < span class = "p" > ().< / span > < span class = "n" > val< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-81-13" name = "__codelineno-81-13" href = "#__codelineno-81-13" > < / a > < span class = "w" > < / span > < span class = "n" > node_val< / span >
@@ -5450,7 +5450,7 @@
< a id = "__codelineno-82-8" name = "__codelineno-82-8" href = "#__codelineno-82-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "nb" > NULL< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-82-9" name = "__codelineno-82-9" href = "#__codelineno-82-9" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "n" > newTreeNode< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-82-10" name = "__codelineno-82-10" href = "#__codelineno-82-10" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-82-11" name = "__codelineno-82-11" href = "#__codelineno-82-11" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置, 并插入节点 */< / span >
< a id = "__codelineno-82-11" name = "__codelineno-82-11" href = "#__codelineno-82-11" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找插入位置并插入节点 */< / span >
< a id = "__codelineno-82-12" name = "__codelineno-82-12" href = "#__codelineno-82-12" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-82-13" name = "__codelineno-82-13" href = "#__codelineno-82-13" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-82-14" name = "__codelineno-82-14" href = "#__codelineno-82-14" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
@@ -5482,7 +5482,7 @@
< a id = "__codelineno-83-11" name = "__codelineno-83-11" href = "#__codelineno-83-11" > < / a > < span class = "w" > < / span > < span class = "n" > tmp_node< / span > < span class = "p" > .< / span > < span class = "n" > init< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-83-12" name = "__codelineno-83-12" href = "#__codelineno-83-12" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "n" > tmp_node< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-83-13" name = "__codelineno-83-13" href = "#__codelineno-83-13" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-83-14" name = "__codelineno-83-14" href = "#__codelineno-83-14" > < / a > < span class = "w" > < / span > < span class = "c1" > // 1. 查找插入位置, 并插入节点< / span >
< a id = "__codelineno-83-14" name = "__codelineno-83-14" href = "#__codelineno-83-14" > < / a > < span class = "w" > < / span > < span class = "c1" > // 1. 查找插入位置并插入节点< / span >
< a id = "__codelineno-83-15" name = "__codelineno-83-15" href = "#__codelineno-83-15" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-83-16" name = "__codelineno-83-16" href = "#__codelineno-83-16" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > try< / span > < span class = "w" > < / span > < span class = "n" > self< / span > < span class = "p" > .< / span > < span class = "n" > insertHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-83-17" name = "__codelineno-83-17" href = "#__codelineno-83-17" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
@@ -5513,7 +5513,7 @@
< a id = "__codelineno-84-6" name = "__codelineno-84-6" href = "#__codelineno-84-6" > < / a > < span class = "w" > < / span > < span class = "sd" > " " " 递归删除节点(辅助方法)" " " < / span >
< a id = "__codelineno-84-7" name = "__codelineno-84-7" href = "#__codelineno-84-7" > < / a > < span class = "k" > if< / span > < span class = "n" > node< / span > < span class = "ow" > is< / span > < span class = "kc" > None< / span > < span class = "p" > :< / span >
< a id = "__codelineno-84-8" name = "__codelineno-84-8" href = "#__codelineno-84-8" > < / a > < span class = "k" > return< / span > < span class = "kc" > None< / span >
< a id = "__codelineno-84-9" name = "__codelineno-84-9" href = "#__codelineno-84-9" > < / a > < span class = "c1" > # 1. 查找节点, 并删除之 < / span >
< a id = "__codelineno-84-9" name = "__codelineno-84-9" href = "#__codelineno-84-9" > < / a > < span class = "c1" > # 1. 查找节点并删除< / span >
< a id = "__codelineno-84-10" name = "__codelineno-84-10" href = "#__codelineno-84-10" > < / a > < span class = "k" > if< / span > < span class = "n" > val< / span > < span class = "o" > < < / span > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > val< / span > < span class = "p" > :< / span >
< a id = "__codelineno-84-11" name = "__codelineno-84-11" href = "#__codelineno-84-11" > < / a > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > left< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > remove_helper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-84-12" name = "__codelineno-84-12" href = "#__codelineno-84-12" > < / a > < span class = "k" > elif< / span > < span class = "n" > val< / span > < span class = "o" > > < / span > < span class = "n" > node< / span > < span class = "o" > .< / span > < span class = "n" > val< / span > < span class = "p" > :< / span >
@@ -5550,7 +5550,7 @@
< a id = "__codelineno-85-7" name = "__codelineno-85-7" href = "#__codelineno-85-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "nf" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-85-8" name = "__codelineno-85-8" href = "#__codelineno-85-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "k" > nullptr< / span > < span class = "p" > )< / span >
< a id = "__codelineno-85-9" name = "__codelineno-85-9" href = "#__codelineno-85-9" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "k" > nullptr< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-85-10" name = "__codelineno-85-10" href = "#__codelineno-85-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-85-10" name = "__codelineno-85-10" href = "#__codelineno-85-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-85-11" name = "__codelineno-85-11" href = "#__codelineno-85-11" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-85-12" name = "__codelineno-85-12" href = "#__codelineno-85-12" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-85-13" name = "__codelineno-85-13" href = "#__codelineno-85-13" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
@@ -5597,7 +5597,7 @@
< a id = "__codelineno-86-7" name = "__codelineno-86-7" href = "#__codelineno-86-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "nf" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-86-8" name = "__codelineno-86-8" href = "#__codelineno-86-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span >
< a id = "__codelineno-86-9" name = "__codelineno-86-9" href = "#__codelineno-86-9" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-86-10" name = "__codelineno-86-10" href = "#__codelineno-86-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-86-10" name = "__codelineno-86-10" href = "#__codelineno-86-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-86-11" name = "__codelineno-86-11" href = "#__codelineno-86-11" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-86-12" name = "__codelineno-86-12" href = "#__codelineno-86-12" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-86-13" name = "__codelineno-86-13" href = "#__codelineno-86-13" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "na" > val< / span > < span class = "p" > )< / span >
@@ -5638,7 +5638,7 @@
< a id = "__codelineno-87-6" name = "__codelineno-87-6" href = "#__codelineno-87-6" > < / a > < span class = "cm" > /* 递归删除节点(辅助方法) */< / span >
< a id = "__codelineno-87-7" name = "__codelineno-87-7" href = "#__codelineno-87-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > RemoveHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-87-8" name = "__codelineno-87-8" href = "#__codelineno-87-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "k" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "k" > null< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-87-9" name = "__codelineno-87-9" href = "#__codelineno-87-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-87-9" name = "__codelineno-87-9" href = "#__codelineno-87-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-87-10" name = "__codelineno-87-10" href = "#__codelineno-87-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-87-11" name = "__codelineno-87-11" href = "#__codelineno-87-11" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > RemoveHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-87-12" name = "__codelineno-87-12" href = "#__codelineno-87-12" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "nf" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
@@ -5681,7 +5681,7 @@
< a id = "__codelineno-88-8" name = "__codelineno-88-8" href = "#__codelineno-88-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "kc" > nil< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-88-9" name = "__codelineno-88-9" href = "#__codelineno-88-9" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "kc" > nil< / span >
< a id = "__codelineno-88-10" name = "__codelineno-88-10" href = "#__codelineno-88-10" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-88-11" name = "__codelineno-88-11" href = "#__codelineno-88-11" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-88-11" name = "__codelineno-88-11" href = "#__codelineno-88-11" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-88-12" name = "__codelineno-88-12" href = "#__codelineno-88-12" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "p" > < < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Val< / span > < span class = "p" > .(< / span > < span class = "kt" > int< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-88-13" name = "__codelineno-88-13" href = "#__codelineno-88-13" > < / a > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Left< / span > < span class = "w" > < / span > < span class = "p" > =< / span > < span class = "w" > < / span > < span class = "nx" > t< / span > < span class = "p" > .< / span > < span class = "nx" > removeHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-88-14" name = "__codelineno-88-14" href = "#__codelineno-88-14" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "p" > > < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > Val< / span > < span class = "p" > .(< / span > < span class = "kt" > int< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
@@ -5730,7 +5730,7 @@
< a id = "__codelineno-89-9" name = "__codelineno-89-9" href = "#__codelineno-89-9" > < / a > < span class = "k" > if< / span > < span class = "n" > node< / span > < span class = "p" > ==< / span > < span class = "kc" > nil< / span > < span class = "p" > {< / span >
< a id = "__codelineno-89-10" name = "__codelineno-89-10" href = "#__codelineno-89-10" > < / a > < span class = "k" > return< / span > < span class = "kc" > nil< / span >
< a id = "__codelineno-89-11" name = "__codelineno-89-11" href = "#__codelineno-89-11" > < / a > < span class = "p" > }< / span >
< a id = "__codelineno-89-12" name = "__codelineno-89-12" href = "#__codelineno-89-12" > < / a > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-89-12" name = "__codelineno-89-12" href = "#__codelineno-89-12" > < / a > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-89-13" name = "__codelineno-89-13" href = "#__codelineno-89-13" > < / a > < span class = "k" > if< / span > < span class = "n" > val< / span > < span class = "o" > < < / span > < span class = "n" > node< / span > < span class = "p" > !.< / span > < span class = "n" > val< / span > < span class = "p" > {< / span >
< a id = "__codelineno-89-14" name = "__codelineno-89-14" href = "#__codelineno-89-14" > < / a > < span class = "n" > node< / span > < span class = "p" > ?.< / span > < span class = "kr" > left< / span > < span class = "p" > =< / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > :< / span > < span class = "n" > node< / span > < span class = "p" > ?.< / span > < span class = "kr" > left< / span > < span class = "p" > ,< / span > < span class = "n" > val< / span > < span class = "p" > :< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-89-15" name = "__codelineno-89-15" href = "#__codelineno-89-15" > < / a > < span class = "p" > }< / span > < span class = "k" > else< / span > < span class = "k" > if< / span > < span class = "n" > val< / span > < span class = "o" > > < / span > < span class = "n" > node< / span > < span class = "p" > !.< / span > < span class = "n" > val< / span > < span class = "p" > {< / span >
@@ -5773,7 +5773,7 @@
< a id = "__codelineno-90-6" name = "__codelineno-90-6" href = "#__codelineno-90-6" > < / a > < span class = "cm" > /* 递归删除节点(辅助方法) */< / span >
< a id = "__codelineno-90-7" name = "__codelineno-90-7" href = "#__codelineno-90-7" > < / a > < span class = "err" > #< / span > < span class = "nx" > removeHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-90-8" name = "__codelineno-90-8" href = "#__codelineno-90-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-90-9" name = "__codelineno-90-9" href = "#__codelineno-90-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-90-9" name = "__codelineno-90-9" href = "#__codelineno-90-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-90-10" name = "__codelineno-90-10" href = "#__codelineno-90-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "err" > #< / span > < span class = "nx" > removeHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-90-11" name = "__codelineno-90-11" href = "#__codelineno-90-11" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-90-12" name = "__codelineno-90-12" href = "#__codelineno-90-12" > < / a > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > right< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "err" > #< / span > < span class = "nx" > removeHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > right< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
@@ -5811,7 +5811,7 @@
< a id = "__codelineno-91-6" name = "__codelineno-91-6" href = "#__codelineno-91-6" > < / a > < span class = "cm" > /* 递归删除节点(辅助方法) */< / span >
< a id = "__codelineno-91-7" name = "__codelineno-91-7" href = "#__codelineno-91-7" > < / a > < span class = "nx" > removeHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > TreeNode< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "kt" > number< / span > < span class = "p" > )< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "nx" > TreeNode< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-91-8" name = "__codelineno-91-8" href = "#__codelineno-91-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "w" > < / span > < span class = "o" > ===< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-91-9" name = "__codelineno-91-9" href = "#__codelineno-91-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-91-9" name = "__codelineno-91-9" href = "#__codelineno-91-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-91-10" name = "__codelineno-91-10" href = "#__codelineno-91-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-91-11" name = "__codelineno-91-11" href = "#__codelineno-91-11" > < / a > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "k" > this< / span > < span class = "p" > .< / span > < span class = "nx" > removeHelper< / span > < span class = "p" > (< / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "nx" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-91-12" name = "__codelineno-91-12" href = "#__codelineno-91-12" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "nx" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "nx" > node< / span > < span class = "p" > .< / span > < span class = "nx" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
@@ -5853,7 +5853,7 @@
< a id = "__codelineno-92-6" name = "__codelineno-92-6" href = "#__codelineno-92-6" > < / a > < span class = "cm" > /* 递归删除节点(辅助方法) */< / span >
< a id = "__codelineno-92-7" name = "__codelineno-92-7" href = "#__codelineno-92-7" > < / a > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > TreeNode< / span > < span class = "o" > ?< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "kt" > int< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-92-8" name = "__codelineno-92-8" href = "#__codelineno-92-8" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-92-9" name = "__codelineno-92-9" href = "#__codelineno-92-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-92-9" name = "__codelineno-92-9" href = "#__codelineno-92-9" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-92-10" name = "__codelineno-92-10" href = "#__codelineno-92-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
< a id = "__codelineno-92-11" name = "__codelineno-92-11" href = "#__codelineno-92-11" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-92-12" name = "__codelineno-92-12" href = "#__codelineno-92-12" > < / a > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span >
@@ -5895,7 +5895,7 @@
< a id = "__codelineno-93-7" name = "__codelineno-93-7" href = "#__codelineno-93-7" > < / a > < span class = "k" > fn< / span > < span class = "nf" > remove_helper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > : < span class = "nc" > OptionTreeNodeRc< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > : < span class = "kt" > i32< / span > < span class = "p" > )< / span > < span class = "w" > < / span > -> < span class = "nc" > OptionTreeNodeRc< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-93-8" name = "__codelineno-93-8" href = "#__codelineno-93-8" > < / a > < span class = "w" > < / span > < span class = "k" > match< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-93-9" name = "__codelineno-93-9" href = "#__codelineno-93-9" > < / a > < span class = "w" > < / span > < span class = "nb" > Some< / span > < span class = "p" > (< / span > < span class = "k" > mut< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > => < / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-93-10" name = "__codelineno-93-10" href = "#__codelineno-93-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-93-10" name = "__codelineno-93-10" href = "#__codelineno-93-10" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-93-11" name = "__codelineno-93-11" href = "#__codelineno-93-11" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > borrow< / span > < span class = "p" > ().< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-93-12" name = "__codelineno-93-12" href = "#__codelineno-93-12" > < / a > < span class = "w" > < / span > < span class = "kd" > let< / span > < span class = "w" > < / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > borrow< / span > < span class = "p" > ().< / span > < span class = "n" > left< / span > < span class = "p" > .< / span > < span class = "n" > clone< / span > < span class = "p" > ();< / span >
< a id = "__codelineno-93-13" name = "__codelineno-93-13" href = "#__codelineno-93-13" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > borrow_mut< / span > < span class = "p" > ().< / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "bp" > Self< / span > ::< span class = "n" > remove_helper< / span > < span class = "p" > (< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
@@ -5954,7 +5954,7 @@
< a id = "__codelineno-94-10" name = "__codelineno-94-10" href = "#__codelineno-94-10" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "nb" > NULL< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-94-11" name = "__codelineno-94-11" href = "#__codelineno-94-11" > < / a > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "nb" > NULL< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-94-12" name = "__codelineno-94-12" href = "#__codelineno-94-12" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span >
< a id = "__codelineno-94-13" name = "__codelineno-94-13" href = "#__codelineno-94-13" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点, 并删除之 */< / span >
< a id = "__codelineno-94-13" name = "__codelineno-94-13" href = "#__codelineno-94-13" > < / a > < span class = "w" > < / span > < span class = "cm" > /* 1. 查找节点并删除 */< / span >
< a id = "__codelineno-94-14" name = "__codelineno-94-14" href = "#__codelineno-94-14" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-94-15" name = "__codelineno-94-15" href = "#__codelineno-94-15" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-94-16" name = "__codelineno-94-16" href = "#__codelineno-94-16" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "o" > -> < / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
@@ -6002,7 +6002,7 @@
< a id = "__codelineno-95-7" name = "__codelineno-95-7" href = "#__codelineno-95-7" > < / a > < span class = "k" > fn< / span > < span class = "w" > < / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > self< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "o" > *< / span > < span class = "n" > Self< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > node_< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "o" > ?*< / span > < span class = "n" > inc< / span > < span class = "p" > .< / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > T< / span > < span class = "p" > ),< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "o" > :< / span > < span class = "w" > < / span > < span class = "n" > T< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "o" > ?*< / span > < span class = "n" > inc< / span > < span class = "p" > .< / span > < span class = "n" > TreeNode< / span > < span class = "p" > (< / span > < span class = "n" > T< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-95-8" name = "__codelineno-95-8" href = "#__codelineno-95-8" > < / a > < span class = "w" > < / span > < span class = "kr" > var< / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > node_< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-95-9" name = "__codelineno-95-9" href = "#__codelineno-95-9" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "w" > < / span > < span class = "o" > ==< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "k" > return< / span > < span class = "w" > < / span > < span class = "kc" > null< / span > < span class = "p" > ;< / span >
< a id = "__codelineno-95-10" name = "__codelineno-95-10" href = "#__codelineno-95-10" > < / a > < span class = "w" > < / span > < span class = "c1" > // 1. 查找节点, 并删除之 < / span >
< a id = "__codelineno-95-10" name = "__codelineno-95-10" href = "#__codelineno-95-10" > < / a > < span class = "w" > < / span > < span class = "c1" > // 1. 查找节点并删除< / span >
< a id = "__codelineno-95-11" name = "__codelineno-95-11" href = "#__codelineno-95-11" > < / a > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > < < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >
< a id = "__codelineno-95-12" name = "__codelineno-95-12" href = "#__codelineno-95-12" > < / a > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "w" > < / span > < span class = "o" > =< / span > < span class = "w" > < / span > < span class = "n" > self< / span > < span class = "p" > .< / span > < span class = "n" > removeHelper< / span > < span class = "p" > (< / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > left< / span > < span class = "p" > ,< / span > < span class = "w" > < / span > < span class = "n" > val< / span > < span class = "p" > );< / span >
< a id = "__codelineno-95-13" name = "__codelineno-95-13" href = "#__codelineno-95-13" > < / a > < span class = "w" > < / span > < span class = "p" > }< / span > < span class = "w" > < / span > < span class = "k" > else< / span > < span class = "w" > < / span > < span class = "k" > if< / span > < span class = "w" > < / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "w" > < / span > < span class = "o" > > < / span > < span class = "w" > < / span > < span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "o" > ?< / span > < span class = "p" > .< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "w" > < / span > < span class = "p" > {< / span >