我需要在python中实现一个And /或树,这样我才能评估布尔表达式,
我想到了创建一个包含andNode
,orNode
和leafNode
的类。前两个是必须具有和或或值的内部节点,leafNode
必须具有整数值并且代表树的最后叶子。我试过这个但它似乎不起作用:
class Node:
def __init__(self,leaf):
self.orNode = None
self.andNode = None
self.leaf = leaf
class and_or_tree (Node):
def __init__(self):
self.root=None
我需要测试树中是否存在元素,高度并迭代它。
答案 0 :(得分:2)
我认为这样的Leaf和/或节点的例子可能是这样的:
class Leaf:
def __init__(self, v):
self.val = v;
def __call__(self):
return self.val
class AndNode:
def __init__(self, l, r):
self.left = l;
self.right = r;
def __call__(self):
return self.left() and self.right()
class OrNode:
def __init__(self, l, r):
self.left = l;
self.right = r;
def __call__(self):
return self.left() or self.right()
您可以构建这样的树:
print AndNode(Leaf(True), Leaf(False))()
print AndNode(OrNode(Leaf(True), Leaf(False)), Leaf(True))()
哪个输出:
False
True