gpt4 book ai didi

java - 如何在Java中将二叉树中的Node类型转换为Integer类型?

转载 作者:行者123 更新时间:2023-12-02 03:19:06 25 4
gpt4 key购买 nike

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

想象一下有两个 parent 和两个 child 的普通二叉树。假设我必须找到两个 child 中的一个。为了让我做到这一点,我必须遍历根,然后遍历 parent ,然后才能找到 child 。因此,每一个被遍历的节点都会受到打击。而且它会随着时间的推移而积累。显然,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 类中有一个方法来遍历所有节点,并在需要时对每个节点调用 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();
}
}

关于java - 如何在Java中将二叉树中的Node类型转换为Integer类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com