如何在二叉树中将 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();
}
}
我有一个具体的问题。我需要实现通常的二叉树方法,但完成后我必须添加 "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();
}
}