Class SortedList.Node

java.lang.Object
cn.nukkit.utils.SortedList.Node
All Implemented Interfaces:
Comparable<SortedList<T>.Node>
Enclosing class:
SortedList<T>

protected class SortedList.Node extends Object implements Comparable<SortedList<T>.Node>
用于表示树中位置的内部类。每个节点存储一个相等值的列表,包含它们的子节点和父节点、在该点扎根的子树的高度以及它们拥有的子元素的总数。

顺便提一句,这里的left和right仅仅是处于中国人描述数据结构的习惯,并不是影射某些买办/新官僚政治立场左右摇晃,本人坚定信仰中国特色社会主义。

Author:
superice666
  • Field Details

    • id

      protected final int id
      此节点的唯一id:自动生成,节点越新,此值越高。
  • Constructor Details

    • Node

      protected Node(T t)
  • Method Details

    • hasTwoChildren

      protected boolean hasTwoChildren()
    • getGrandParent

      protected SortedList<T>.Node getGrandParent()
      返回此节点的父节点,该节点可能为空。
      Returns:
      此节点的父节点(如果存在),否则为null
    • isLeftChildOfParent

      public boolean isLeftChildOfParent()
      返回它是否是其父节点的左子节点;如果这是根节点,则返回false。
      Returns:
      如果这是其父节点的左子节点,则为true,否则为false
    • isRightChildOfParent

      public boolean isRightChildOfParent()
      返回它是否是其父节点的右子节点;如果这是根节点,则返回false。
      Returns:
      如果这是其父节点的右子节点,则为true,否则为false
    • getLeftChild

      protected SortedList<T>.Node getLeftChild()
    • getRightChild

      protected SortedList<T>.Node getRightChild()
    • getParent

      protected SortedList<T>.Node getParent()
    • compareTo

      public int compareTo(SortedList<T>.Node other)
      使用比较器将存储在该节点上的值与给定节点上的值进行比较,如果这些值相等,则比较其ID上的节点。我们认定较老的节点较小。
      Specified by:
      compareTo in interface Comparable<SortedList<T>.Node>
      Returns:
      如果比较器在比较存储在该节点和给定节点上的值时返回一个非零数字,则返回该数字,否则返回该节点的id减去给定节点的id
    • smallestNodeInSubTree

      protected final SortedList<T>.Node smallestNodeInSubTree()
    • largestNodeInSubTree

      protected final SortedList<T>.Node largestNodeInSubTree()
    • successor

      protected final SortedList<T>.Node successor()
      获取树中下一个最大的节点,如果这是值最大的节点,则为null。
      Returns:
      树中下一个最大的节点,如果这是值最大的节点,则为null
    • predecessor

      protected final SortedList<T>.Node predecessor()
      获取树中下一个最小的节点,如果这是值最小的节点,则为null。
      Returns:
      树中下一个最小的节点,如果这是值最小的节点,则为null
    • isLeaf

      public boolean isLeaf()
      返回此节点是否为叶节点,如果其左和右子级都设置为null,则它就是叶子姐姐
      Returns:
      如果此节点为叶节点,则为true,否则为false。
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • sizeOfSubTree

      public int sizeOfSubTree()
      返回此节点的子节点数加一。此方法使用缓存的变量,确保它在恒定时间内运行。
      Returns:
      此节点的子节点数加一
    • getValue

      public T getValue()
    • updateCachedValues

      protected final void updateCachedValues()
      更新此路径上节点的高度和子节点数。还为路径上的每个节点(包括此节点)调用updateAdditionalCachedValues()
    • updateAdditionalCachedValues

      protected void updateAdditionalCachedValues()
      当从树中插入或删除节点时被调用,并为子类提供一个钩子来更新其缓存值。

      每次更改列表时都会调用此方法。它首先在受给定更改影响的最深节点上调用,然后在该节点的祖先上调用,直到在根节点上调用为止。

      因此,它仅适用于在缓存值非全局且不依赖于计算时具有正确值的父节点的情况下更新缓存值。

      这个实现是空的,留给子类使用(虽然我觉得没人会用)。