我试图实现二进制搜索树,并且我的size()
方法遇到问题,该方法计算树中节点的数量。
class BSTNode:
def __init__(self, item):
self._element = item
self._leftchild = None
self._rightchild = None
self._parent = None
这就是我的尺寸功能:
def size(self):
size = 0
if self != None:
size += 1
if self._leftchild != None:
size += 1 + self._leftchild.size()
if self._rightchild != None:
size += 1 + self._rightchild.size()
return size
它覆盖了树中实际存在的节点数量,我不知道为什么,也许是因为它的递归但我不确定。
答案 0 :(得分:3)
替换
size += 1 + self._leftchild.size()
使用
size += self._leftchild.size()
额外的1是过度计数的原因。对于正确的孩子也是如此。
答案 1 :(得分:1)
您正在计算节点两次。您应该只对每个节点进行一次计数。
def size(self):
size = 0
if self != None:
size += 1
if self._leftchild != None:
size += self._leftchild.size()
if self._rightchild != None:
size += self._rightchild.size()
return size