2 回答

TA貢獻1752條經驗 獲得超4個贊
如果要打印右側子樹中的節點,則只需調用與他的右側節點對應的樹的屬性即可。print_tree
首先,定義一個print_tree方法:
def print_tree(self) -> None:
if self.is_empty():
pass
else:
# you are free to do additional things here such as print node value or etc..
self._left.print_tree()
self._right.print_tree()
然后是print_right_subtree方法:
def print_right_subtree(self) -> None:
self._right.print_tree() # which correspond to the print_tree of the _right attribute

TA貢獻1946條經驗 獲得超3個贊
由于您不是在要求代碼本身,而是在尋求幫助來編寫自己的代碼......
有一百萬種方法可以做到這一點。有些更優化。有些寫得更快。這完全取決于您的需求。
在這里,我認為你需要了解一棵樹是什么。你的任何子樹,本身就是一棵樹。所以,你必須明白,這確實意味著任何事情。例如,只有每棵樹的正確分支?還是第一個右枝的所有樹?也許是第二個分支?
print the right tree
如果我做對了(Da bum tss?。阆朐谀愕募軜嬌洗蛴涞恼_分支,稱為根。為什么不說呢?這樣,即使您想從子樹開始打印樹,也很容易做到這一點!
I want to print all the numbers above 41
您需要可視化您的算法將執行的操作。在這里,您要打印 41(主樹的右分支)以上的所有數字。讓我為此編寫偽代碼(假設您已經在值為65的根節點上:
我想按升序寫所有數字...
我的根是65。我的左邊是50歲,我的右邊是91歲。
哪個是最低的?50. 它還有其他分支嗎?不。打印它!
我的根仍然是65,我的權利是91。我的根低于我的樹枝?打印它!然后轉到正確的分支。
我的主要現在是91,我的左邊是72,我的右邊是99。
哪個是最低的?你得到了遞歸。
即使經過所有這些,您仍然可以選擇使另一個更快 - 編寫,而不是計算!- 解決方案。從您需要的分支中收集所有值,并打印排序的值!
添加回答
舉報