python二进制搜索树大小

时间:2017-11-15 16:40:13

标签: python binary-search-tree nodes counting

我试图实现二进制搜索树,并且我的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

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

2 个答案:

答案 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