繁体   English   中英

python二进制搜索树大小

[英]python binary search tree size

我试图实现一个二叉搜索树,而我的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

它超过了实际上在树中的节点数,我不知道为什么,也许是因为它是递归的但我不确定。

更换

size += 1 + self._leftchild.size()

size += self._leftchild.size()

额外的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM