簡體   English   中英

計算二進制搜索樹中的重復節點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM