[英]Count repetitive node in Binary Search Tree
我正在嘗試編寫一個函數來計算二進制搜索樹中的重復節點(假定該樹接受重復)。 這是我有的代碼行
def count(treeroot,item,y):
if treeroot==None:
return 0
elif treeroot.getData()==item:
return 1
else:
return count(treeroot.getLeft(),item,y)+count(treeroot.getRight(),item,y)
其中y是搜索的起始編號(例如,搜索樹中的10個數字,我們計算(treeroot,10,0)
但是,我嘗試將3個10放進去,而我只收到1的計數。
誰能告訴我我的代碼出了什么問題以及如何解決它
找到第一個項目后,您就停止沿樹遞歸。 您需要繼續遞歸:
def count(treeroot,item,y):
if treeroot==None:
return 0
elif treeroot.getData()==item:
return 1 + count(treeroot.getLeft(),item,y)+count(treeroot.getRight(),item,y)
else:
return count(treeroot.getLeft(),item,y)+count(treeroot.getRight(),item,y)
我希望您能看到算法的問題:即使您知道9
s的左邊或11
s的右邊沒有10
s,您也將訪問樹的每個節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.