簡體   English   中英

如何在Java中將Java從類型Node轉換為二進制樹中的Integer?

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

我有一個特定的問題。 我需要實現通常的二叉樹方法,但是在完成之后,我必須添加“ hits”。 更具體地說,每次我找到某個Node(或只是遍歷它)時,Node都會受到打擊。 給出的例子:

想象正常的二叉樹有兩個父母和兩個孩子。 假設我必須找到兩個孩子之一。 為了讓我做到這一點,我必須遍歷根源,然后遍歷父母,然后才能生孩子。 因此,遍歷的所有這些節點都會受到打擊。 隨着時間的推移,它會累積。 因此,很明顯,root總是會獲得最大的成功。 我希望我更容易理解。

我實現了方法,並且效果很好。 不幸的是,每次創建新Node時,命中數應設置為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();
    } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM