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