Skip to main content
 首页 » 编程设计

python之在 Python 中计算二叉搜索树中的节点

2025年05月04日12cloudgamer

我对编程还很陌生,我想搞些二叉搜索树。我想创建一个函数来递归地计算树中节点的数量,但是,当我运行我的函数时,它似乎不起作用并且它一直返回“无”,就好像我的树中没有任何东西一样。谁能帮我找出问题所在?

这是我的 TreeNode 类:

class TreeNode(object): 
 
    def __init__(self, data = None, left=None, right=None): 
        self.item = data 
        self.left = left 
        self.right = right 
 
    def __str__(self): 
        return str(self.item) 

这是我的主要功能,我削减了大部分功能,以便我们可以解决与节点计数相关的问题。

from TreeNode import TreeNode 
 
 
class BST(object): 
 
    #------------------------------------------------------------ 
 
    def __init__(self): 
 
        """create empty binary search tree 
        post: empty tree created""" 
 
        self.root = None 
 
def treeSize(self, root, size = 0): 
 
        if root is None: 
            return -1 
 
        if root is not None: 
            size += 1 
            if root.left is not None: 
                self.treeSize(root.left, size) 
            if root.right is not None: 
                self.treeSize(root.right, size) 

这是我用来测试我的功能的代码:

from BinarySearchTree import BST 
from TreeNode import TreeNode 
 
tree = TreeNode(4, TreeNode(2, TreeNode(1), TreeNode(3)), TreeNode (7, TreeNode(6),TreeNode(8))) 
 
a = BST() 
 
print(a.postOrder(tree)) 
print(a.treeSize(tree)) 

当我调用“print(a.treeSize(tree))”时,它只返回“none”,而不是应有的“7”。

请您参考如下方法:

你也可以用递归的方式来做:

def treeSize(self, root): 
 
    if root is None: 
        return 0 
 
    if root is not None: 
        return 1 + self.treeSize(root.left) + self.treeSize(root.right) 

Jonathan 的回答也很好。