python二进制搜索树大小

python二进制搜索树大小,python,binary-search-tree,nodes,counting,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()
方法遇到了问题,该方法计算树中的节点数

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
它计算了树中实际存在的节点数,我不知道为什么,可能是因为它是递归的,但我不确定。

Replace

size += 1 + 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

所说的
size
,是指树中的节点数吗?如果你也能提供一个输入和输出的示例,那会有很大帮助。是的,如果这不够清楚,那很抱歉
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