これは私のコードがすべきことです:
問題は、メソッドを作成することを要求し、パラメーターとして最小および最大の整数を受け入れ、その範囲内にない要素をツリーから削除します。
最初に書いたコードは
public void trim (int min, int max) {
overallRoot = trim (overallRoot, min, max);
}
private IntTreeNode trim (IntTreeNode root, int min, int max) {
if (root != null) {
if(root.data < min && root.data > max) {
root = null;
}else {
root.left = trim(root.left, min, max);
root.right = trim (root.right, min, max);
}
}
return root;
}
私のコードはツリーを再構築しないため、少し検索しましたが、次のコードが見つかりました。
private IntTreeNode trim (IntTreeNode root, int min, int max) {
if (root == null) {
return root;
}
root.left = trim(root.left, min, max);
root.right = trim (root.right, min, max);
if(root.data < max && root.data> min) {
return root;
}else if (root.data < min) {
return root.right;
}else if (node.data > max) {
return root.left;
}
}
returnステートメントがないため、コードはコンパイルされません。そのため、elseに変更すると、場合によってのみ機能します。上記のコードはある程度理解できますが、あまり直感的に書かれていませんが、繰り返しになりますが...再帰はあまり直感的ではありません。私の教授が言うように、「信仰を飛躍させてください」。どんな助けでも大歓迎です:)私の最終的にうまくやろうとしています