本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
cs:dsa:courses:gtx_1332x:iii_avl:start [2024/04/14 14:05] – [BST Add] codinghare | cs:dsa:courses:gtx_1332x:iii_avl:start [2024/04/25 11:27] (当前版本) – [Introduction to AVLs] codinghare | ||
---|---|---|---|
行 31: | 行 31: | ||
* 如果目标元素小于当前节点,则搜索左子树 | * 如果目标元素小于当前节点,则搜索左子树 | ||
* 如果目标元素大于当前节点,则搜索右子树 | * 如果目标元素大于当前节点,则搜索右子树 | ||
- | * 当前节点为空时,则找到了添加元素的位置 | + | * 当前节点为空时,则找到了添加元素的位置,添加元素,并**返回**该节点用于链接 |
<code java> | <code java> | ||
public void add(T data): | public void add(T data): | ||
root <- rAdd(root, data) | root <- rAdd(root, data) | ||
private Node rAdd(Node curr, T data): | private Node rAdd(Node curr, T data): | ||
+ | //base case | ||
if curr == null: | if curr == null: | ||
size++ | size++ | ||
行 45: | 行 46: | ||
return curr | return curr | ||
</ | </ | ||
+ | <WRAP center round box 100%> | ||
+ | 注意条件中并没有 '' | ||
+ | </ | ||
+ | ==BST Remove== | ||
+ | 参考[[cs: | ||
+ | ===Introduction to AVLs=== | ||
+ | * AVL 树属于 BST子集,特性继承 BST | ||
+ | * AVL 属于自平衡(self-balancing)BST,通过自平衡避免 BST 最坏情况带来的 $O(n)$ 复杂度 | ||
+ | * AVL 通过 //balance factor(BF)// | ||
+ | * //BF// 的计算公式为:'' | ||
+ | * 子节点不存在时的 height ('' | ||
+ | * 树的更新只会影响到从被改变节点到 root 路径上的所有节点 | ||
+ | * //BF// 的值对树节点的反应: | ||
+ | * 父节点有左节点称为 // | ||
+ | * //BF// **大于** 0 时为 // | ||
+ | |||
+ | ==Definition of Unbalanced== | ||
+ | * Unbalanced:'' | ||
+ | * blalanced:'' | ||
+ | ===AVL Rotations=== |