我對編程相當陌生,並且想要使用一些二叉搜索樹。我想做一個遞歸計算樹中節點數量的函數,但是,當我運行我的函數時,它似乎不起作用,它會一直返回'none',就好像我的樹中沒有任何東西。任何人都可以幫我找到問題嗎?在Python中計算二進制搜索樹中的節點
這是我的樹節點類:
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))
當我稱之爲「印(a.treeSize(樹))」這只是返回「無」,而不是' 7'就像它應該。
是的,它現在的作品!非常感謝!我無法相信我忘了給我的功能添加self.size。你是最好的! – Cooper 2015-03-30 22:31:50