gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:49 25 4
gpt4 key购买 nike

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

这是我的 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 的回答也很好。

关于python - 在 Python 中计算二叉搜索树中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29357283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com