【发布时间】:2015-03-30 22:12:45
【问题描述】:
我对编程还很陌生,我想搞砸一些二叉搜索树。我想创建一个递归计算树中节点数的函数,但是,当我运行我的函数时,它似乎不起作用,并且它一直返回“无”,就好像我的树中没有任何内容一样。谁能帮我找到这里的问题?
这是我的 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'。
【问题讨论】:
标签: python binary-tree binary-search-tree