タイトルにはバイナリツリーで最大値を見つけるのに役立つと書かれています。私は再帰でそれをしようとしています。binarytreeで最大値を見つけてそのノードを返します
ノードのインスタンス変数は、ノード内の要素がツリー内で重複していて、到達しようとしている最大値ですが、nullpointerexceptionを取得した場合に更新されます。これは私のコードです:
private Node getMaxFreq(Node node){
Node left = null;
Node right = null;
if(node == null){
System.out.println("tree is empty");
}
if(node.compareTo(node.left) <= 0){
getMaxFreq(node.left);
}
else{
left = node;
}
if(node.compareTo(node.right) <= 0){
getMaxFreq(node.right);
}
else{
right = node;
}
if(left.compareTo(right) > 0){
return left;
}
else{
return right;
}
}
/**
* method to find the node with highest frequency in tree.
* @return node with highest frequency.
*/
public void getMaxFreq(){
Node temp = root;
System.out.println(getMaxFreq(temp));
}
//Node class
public class Node implements Comparable<Node> {
String word;
int freq;
Node left;
Node right;
Node(String word) {
this.word = word;
freq = 1;
}
public String toString() {
return word + " occurs " + freq + " times.";
}
public int compareTo(Node other) {
return Integer.compare(this.freq, other.freq);
}
}
私を助けてください!
Nodeクラスも投稿できますか? –
updated @ user3747720 – JohnBanana