在以下代碼片斷中,p是二叉搜索樹中的一個節點,如果p的左側子元素不爲空我想將p指向其左側子元素,但java是通過值傳遞時,函數返回樹的結構保持不變。如何更改函數中的引用
void remove(BSTNode p)
{
if(p.ch[0]==null)
p=p.ch[0];
}
其實我想要實現類似下面的C++代碼:
void remove(BSTNode* &p)
{
if(p->ch[0]==NULL)
p=p->ch[0];
}
對於其他原因,我不想用下面的方式返回p.ch [0]和集合P在每次通話後刪除。
BSTNode remove(BSTNode p)
{
if(p.ch[0]==null)
return p.ch[0];
}
該怎麼辦?
這是一種解決方法,但我們必須處理p.parent不存在的情況,這會使邏輯有點奇怪。 – outlaw