我填滿了一棵二叉樹,然後我嘗試通過遞歸方法獲得某個葉子的父親。每個節點包含字符串數據;假設我只用每個葉子的「*」初始化字符串數據。 在這種方法中,我遍歷樹,直到找到給定節點(葉),所以我可以返回父節點。 找到葉子後,我想檢查節點(葉子)是否與我正在搜索的目標相同。 不幸的是,情況並非如此,並且該方法返回父級首先發現的葉子。 我已經使用.equals()方法和「==」運算符,但它們都不起作用。 有誰知道如何解決這個問題?對象不同,但得到低谷.equals函數和'=='運算符
BinaryNode root = new BinaryNode("root",2);
BinaryNode na = new BinaryNode("a",2);
BinaryNode naLeaf1= new BinaryNode("*",0);
BinaryNode naLeaf2 = new BinaryNode("*",0);
na.addChild(naLeaf1);
na.addChild(naLeaf2);
BinaryNode nb = new BinaryNode("b",2);
BinaryNode nbLeaf1= new BinaryNode("*",0);
BinaryNode nbLeaf2 = new BinaryNode("*",0);
nb.addChild(nbLeaf1);
nb.addChild(nbLeaf2);
root.addChild(na);
root.addChild(nb);
這是遍歷二叉樹的遞歸方法。
public BinaryNode getParent(BinaryNode root, BinaryNode target) {
if(root!=null) {
for(BinaryNode ni: root.childeren) {
if(!ni.data.equals("*")) {
return getParent(ni, target);
}else {
if(ni.equals(target)) {
return root;
}
}
}
}
return root;
}
我已經爲.equals方法添加了覆蓋,但似乎沒有解決問題。
@Override
public boolean equals(Object target) {
if(target==null) return false;
if(target==this) return true;
if(!(target instanceof BinaryNode)) return false;
return false;
}
如果您不覆蓋equals,則其行爲與==相同。 – 2014-12-06 15:01:58
BinaryNode覆蓋默認的equals()實現嗎?如果是這樣,你可以展示它嗎? – 2014-12-06 15:02:09
@鄒鄒,謝謝! – c0s1n3 2014-12-06 15:03:39