首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在二叉树中将Java类型从Node转换为Integer?

如何在二叉树中将Java类型从Node转换为Integer?
EN

Stack Overflow用户
提问于 2016-10-04 15:38:04
回答 1查看 1.8K关注 0票数 0

我有一些具体的问题。我需要实现通常的二叉树方法,但在完成之后,我必须添加"hits“。更具体地说,每次我发现某个节点(或者只是遍历它)时,Node就会受到攻击。举例:

想象一下普通的二叉树有两个父母和两个孩子。假设我必须找到这两个孩子中的一个。为了让我这样做,我必须遍历根,然后父母,然后我才能找到一个孩子。因此,每一个被遍历的节点都会受到攻击。随着时间的推移它会积累起来。所以很明显,根总是有最多的命中。我希望我能让你更容易理解。

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

代码语言:javascript
复制
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是节点类型。我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-04 15:44:48

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

编辑:

示例代码

代码语言:javascript
复制
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();
    } 
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39856464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档