これはバイナリ ツリー クラスの一部です。ここに find 関数があり、ツリー内のノードを見つけるためのキーが与えられます。見つからない場合は return ですが、ステートメントを下null
に移動すると、この部分はデッド コードとして認識されます。ループif(current==null)
内while
で動作しますが、なぜですか? それは同じですか?
public class Tree {
public Node root;
public Node find(int key) {
Node current = root;
while (current.key != key) {
if (current == null) { //dead code here, why?
return null;
}
if (key < current.key) {
current = current.leftChild;
} else if (key > current.key) {
current = current.rightChild;
}
}
return current;
}
}
public class Node {
public char label;
public boolean visited = false;
public int key;
public float data;
public Node leftChild;
public Node rightChild;
}