如何在二叉树中将 Java 从节点类型转换为整数?

How to cast in Java from type Node to Integer in Binary Tree?

我有一个具体的问题。我需要实现通常的二叉树方法,但完成后我必须添加 "hits"。更具体地说,每次我找到某个节点(或只是遍历它)时,该节点都会被命中。给出的例子:

想象一下具有两个 parents 和两个 children 的普通二叉树。假设我必须找到两个 children 之一。为了让我这样做,我必须先遍历根,然后是 parents,然后才能到达 children。因此,每一个被遍历的节点都会被命中。它会随着时间的推移而积累。很明显,root 将始终具有最多的命中率。我希望我让它更容易理解。

我实现了一些方法并且效果很好。不幸的是,每次创建新节点时,命中数都应设置为 0。这就是问题所在。 我声明 int[] hitCounter = new int[] 并使用以下代码:

public class BinaryTree {
    Node root;
    int[] hitCounter = new int[1000];

    public void add(int data) {

        Node addingNote = new Node(data);

        if (root == null) {
            root = addingNote;
            hitCounter[addingNode] = 0;
        } else
            addNode(root, addingNote);

    }

我认为这会起作用,但显然 hitCounter[addingNode] = 0; 不起作用,因为 hitCounter 是数组类型而 addingNode 是节点类型。我应该如何解决这个问题?

我认为如果每个节点都有自己的命中数会更容易。然后,每次访问该节点时,您都​​可以调用一个将命中计数递增 1 (hitCountIncrement) 的函数。您还可以在每个节点上使用一个方法将命中计数重置为 0 (hitCountReset)。最后,您可以在 BinaryTree class 中使用一个方法来遍历所有节点并在需要时在每个节点上调用 hitCountReset 方法。

编辑:

示例代码

public class Node{

int hitCount = 0; //this should be set in the constructor

public void hitCountIncrement() {
    hitCount++;
}

public void hitCountReset() {
    hitCount = 0;
}
}

public class BinaryTree {

    public void resetAllCounts(){
    for(Node currNode:Nodes){
        currNode.hitCountReset();
    } 
}