Java 计算AVL树中某一范围内的节点数

Java 计算AVL树中某一范围内的节点数,java,performance,binary-search-tree,treenode,avl-tree,Java,Performance,Binary Search Tree,Treenode,Avl Tree,在平衡二叉搜索树中,是否有方法使用

在平衡二叉搜索树中,是否有方法使用 我们可以假设我们已经将每个节点的秩(或高度)动态存储为节点类的成员变量。因此,我们可以直接访问它。

是的,使用查询可以在固定时间内计算其间的节点数。它需要在线性时间内对树进行一次预处理

如果知道两个节点的最低公共祖先的秩,则可以通过从子节点的秩中减去祖先的秩来计算节点与祖先之间的节点数

nodes_between = a.rank + b.rank - 2*(lowest_common_ancestor(a, b).rank) + 1
上面将返回节点
a
b
之间的路径长度,包括两个端点。
+1
表示最低的共同祖先本身。可以在恒定时间内找到
最低的\u公共\u祖先
,并且计算是恒定时间