該方法的規範聲稱,該方法從根開始將移除最左邊的節點並修復樹結構。它還說,如果最左邊的節點沒有左子節點將左子節點的父節點(可能爲空)附加到最左節點的父節點(我沒有看到在代碼中發生了什麼)。這裏是代碼:二叉樹遞歸removeLeftmost()方法是如何工作的?
public BTNode removeLeftmost()
{
if(left == null)
return right;
left = left.removeLeftmost();
return this;
}
我只是沒有看到它是如何返回整個樹與最左邊的節點返回。主要是第一部分讓我很困惑,如果它返回正確的孩子,如果留下== == null。如果我深入樹(由於遞歸調用),不會返回右邊砍掉很多樹?
我錯了,當我認爲這種方法返回整個更新的二叉樹?或者,這種方法意味着補充其他方法(如果它只是返回一部分樹)? – user3614030
@ user3614030:它返回整個樹(或等價地,新的根節點)。這很重要,因爲根節點本身可能會發生變化,如果根節點是最左邊的節點。 –
也許我在追蹤遞歸時遇到了問題。當它是一個返回對象的遞歸問題時,我該怎麼做? – user3614030