次のコード スニペットでは、p は二分探索木のノードです。p の左の子が null でない場合、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] を返し、remove を呼び出すたびに p を設定したくありません。
BSTNode remove(BSTNode p)
{
if(p.ch[0]==null)
return p.ch[0];
}
どうすればそれができますか?