Package cn.nukkit.utils
Class SortedList.Node
java.lang.Object
cn.nukkit.utils.SortedList.Node
- All Implemented Interfaces:
Comparable<SortedList<T>.Node>
- Enclosing class:
- SortedList<T>
用于表示树中位置的内部类。每个节点存储一个相等值的列表,包含它们的子节点和父节点、在该点扎根的子树的高度以及它们拥有的子元素的总数。
顺便提一句,这里的left和right仅仅是处于中国人描述数据结构的习惯,并不是影射某些买办/新官僚政治立场左右摇晃,本人坚定信仰中国特色社会主义。
- Author:
- superice666
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
compareTo
(SortedList<T>.Node other) 使用比较器将存储在该节点上的值与给定节点上的值进行比较,如果这些值相等,则比较其ID上的节点。我们认定较老的节点较小。protected SortedList<T>.Node
返回此节点的父节点,该节点可能为空。protected SortedList<T>.Node
protected SortedList<T>.Node
protected SortedList<T>.Node
getValue()
protected boolean
boolean
isLeaf()
返回此节点是否为叶节点,如果其左和右子级都设置为null,则它就是叶子姐姐。boolean
返回它是否是其父节点的左子节点;如果这是根节点,则返回false。boolean
返回它是否是其父节点的右子节点;如果这是根节点,则返回false。protected final SortedList<T>.Node
protected final SortedList<T>.Node
获取树中下一个最小的节点,如果这是值最小的节点,则为null。int
返回此节点的子节点数加一。此方法使用缓存的变量,确保它在恒定时间内运行。protected final SortedList<T>.Node
protected final SortedList<T>.Node
获取树中下一个最大的节点,如果这是值最大的节点,则为null。toString()
protected void
当从树中插入或删除节点时被调用,并为子类提供一个钩子来更新其缓存值。protected final void
更新此路径上节点的高度和子节点数。还为路径上的每个节点(包括此节点)调用updateAdditionalCachedValues()
-
Field Details
-
id
protected final int id此节点的唯一id:自动生成,节点越新,此值越高。
-
-
Constructor Details
-
Node
-
-
Method Details
-
hasTwoChildren
protected boolean hasTwoChildren() -
getGrandParent
返回此节点的父节点,该节点可能为空。- Returns:
- 此节点的父节点(如果存在),否则为null
-
isLeftChildOfParent
public boolean isLeftChildOfParent()返回它是否是其父节点的左子节点;如果这是根节点,则返回false。- Returns:
- 如果这是其父节点的左子节点,则为true,否则为false
-
isRightChildOfParent
public boolean isRightChildOfParent()返回它是否是其父节点的右子节点;如果这是根节点,则返回false。- Returns:
- 如果这是其父节点的右子节点,则为true,否则为false
-
getLeftChild
-
getRightChild
-
getParent
-
compareTo
使用比较器将存储在该节点上的值与给定节点上的值进行比较,如果这些值相等,则比较其ID上的节点。我们认定较老的节点较小。- Specified by:
compareTo
in interfaceComparable<SortedList<T>.Node>
- Returns:
- 如果比较器在比较存储在该节点和给定节点上的值时返回一个非零数字,则返回该数字,否则返回该节点的id减去给定节点的id
-
smallestNodeInSubTree
-
largestNodeInSubTree
-
successor
获取树中下一个最大的节点,如果这是值最大的节点,则为null。- Returns:
- 树中下一个最大的节点,如果这是值最大的节点,则为null
-
predecessor
获取树中下一个最小的节点,如果这是值最小的节点,则为null。- Returns:
- 树中下一个最小的节点,如果这是值最小的节点,则为null
-
isLeaf
public boolean isLeaf()返回此节点是否为叶节点,如果其左和右子级都设置为null,则它就是叶子姐姐。- Returns:
- 如果此节点为叶节点,则为true,否则为false。
-
toString
-
sizeOfSubTree
public int sizeOfSubTree()返回此节点的子节点数加一。此方法使用缓存的变量,确保它在恒定时间内运行。- Returns:
- 此节点的子节点数加一
-
getValue
-
updateCachedValues
protected final void updateCachedValues()更新此路径上节点的高度和子节点数。还为路径上的每个节点(包括此节点)调用updateAdditionalCachedValues()
-
updateAdditionalCachedValues
protected void updateAdditionalCachedValues()当从树中插入或删除节点时被调用,并为子类提供一个钩子来更新其缓存值。每次更改列表时都会调用此方法。它首先在受给定更改影响的最深节点上调用,然后在该节点的祖先上调用,直到在根节点上调用为止。
因此,它仅适用于在缓存值非全局且不依赖于计算时具有正确值的父节点的情况下更新缓存值。
这个实现是空的,留给子类使用(虽然我觉得没人会用)。
-