アノードの親を見つける方法に取り組んでいます。私は根から始めて、葉がヌルでなく、子のノードでない限り、葉を下っていきます。
以下は私のコードです。何がうまくいかないかをテストしようとしているので、少し面倒です。
私が持っている木は
10
/ \
2 20
\ / \
3 18 22
/
21
渡されるxは20なので、10が親ですが、実行すると22が親として出てきます。whileループが機能していないようですが、それはiveが書いた方法ですか?
public Node<E> findParent(E x)
{
Node<E> node = root;
System.out.println("node is " + node.getData() + " before the search");
System.out.println("The value of x is " + x);
System.out.println("The value of node.getRight is " + node.getRight().getData());
boolean test = !node.getRight().getData().equals(x);
System.out.println("does nodes data equal x " + test);
while(((node!=null) && (node.getLeft()!=null) && (!node.getLeft().getData().equals(x))) ||
((node != null) && (node.getRight()!=null) && (!node.getRight().getData().equals(x))))
{ System.out.println("why didnt it stop");
if(x.compareTo(node.getData()) < 0)
{
node = node.getLeft();
}
else
{
node = node.getRight();
}
}
System.out.println("node is " + node.getData() + " after the search");
return node;
}