我正在尝试编写一个函数来计算二进制搜索树中的重复节点(假设这棵树接受重复)。这是我有一行代码
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号。
任何人都可以告诉我我的代码有什么问题以及如何修复它
答案 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的右侧。