【发布时间】:2016-03-28 15:02:37
【问题描述】:
主类树
class Tree:
def __init__(self, root, size):
self.root = None
self.size = 0
def count_nodes(self):
if self.value is None:
return -1
else:
return 1 + self.count_nodes(self.left) + self.count_nodes(self.right)
#self.size += 1
#if self.left is not None:
#self.left.count_nodes()
#if self.right is not None:
#self.right.count_nodes()
#return self.size
带有子类 Node 和 Leaf
class Node (Tree):
def __init__(self, value, left, right):
self.left = left
self.right = right
self.value = value
class Leaf (Tree):
def __init__(self, value):
self.value = value
遇到叶子怎么办?以上2种方法都试过了,遇到leaf还是不知道怎么处理。
示例树如下,tree.count-nodes()应该返回 7
tree = Node ("one",
Node ("two", Leaf ("three"), Leaf ("four")),
Node ("five", Leaf ("six"), Leaf ("seven")))
【问题讨论】:
-
为什么需要
Leaf类?叶子只是Node和None子代。
标签: python algorithm binary-tree