可能重複:
Intersection of 2 binary trees throws Stack Overflow error
Java Binary Search Trees相交2個二叉樹 - 拋出堆棧溢出錯誤
我需要返回一個包含兩個二叉樹的重疊元素的新OrderedSet 。我認爲這是拋出錯誤的私有OrderedSet,至少這是eclipse告訴我的。
private OrderedSet<E> resultIntersect = new OrderedSet<E>();
public OrderedSet<E> intersection(OrderedSet<E> other) {
OrderedSet<E> result = new OrderedSet<E>();
result = resultIntersect;
return result;
}
private void intersection(OrderedSet<E> other, TreeNode t) {
if (other.contains(t.data)) {
resultIntersect.insert(t.data);
}
if(t.left != null)
intersection(other, t.left);
if(t.right != null)
intersection(other, t.right);
}
**編輯
我似乎無法得到它的正確返回。我怎樣才能讓私人方法正確地返回結果?
public OrderedSet<E> intersection(OrderedSet<E> other) {
OrderedSet<E> result = new OrderedSet<E>();
result = intersection(other, root, result);
return result;
}
private OrderedSet<E> intersection(OrderedSet<E> other, TreeNode t, OrderedSet<E> result) {
if (other.contains(t.data)) {
result.insert(t.data);
}
if (t.left != null && t.right != null)
return intersection(other, t.left, result) + intersection(other, t.right, result);
if (t.left != null)
intersection(other, t.left, result);
if (t.right != null)
return intersection(other, t.right, result);
else
return result;
}
最有可能的是,您的樹形成不良,並循環回到以前的路口。將日誌記錄添加到每個'intersection'調用中,並查看它與您期望的偏離的位置。 –
它立即失敗,我寫的私有變量有什麼問題嗎? – Tinkerbell
你有沒有嘗試用調試器步進? – yshavit