[英]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.