计算二进制搜索树中的重复节点

时间:2015-12-10 13:31:58

标签: python

我正在尝试编写一个函数来计算二进制搜索树中的重复节点(假设这棵树接受重复)。这是我有一行代码

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号码放进去,而我只收到了1号。

任何人都可以告诉我我的代码有什么问题以及如何修复它

1 个答案:

答案 0 :(得分: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)

我希望您看到算法存在问题:您将访问树的每个节点,即使您知道10 s左侧没有9 s或11 s的右侧。