我想扩充一个 avl 树以向每个节点添加额外的属性,例如它包含的节点数(即在其子树中)。
从这里的 avl java 实现代码 http://www.blackbam.at/blackbams-blog/2012/05/04/avl-tree-implementation-in-java/ 我想向它添加某些代码,以便每个节点将包含一个 size 元素。
在 AvlNode 类中,我将其更改为:
/** Here is the AVL-Node class for Completenesse **/
public class AvlNode {
public AvlNode left;
public AvlNode right;
public AvlNode parent;
public int key;
public int balance;
public int size;
public AvlNode(int k) {
left = right = parent = null;
balance = 0;
key = k;
size = 1;
}
public String toString() {
return "" + key;
}
}
但是现在对于 AvlTree 类,在插入和删除操作期间,我实际上在哪里添加代码来更新节点的大小值。我认为这是 rotateleft 和 rotateright 方法。这是正确的吗?