在python中实现和/或树

时间:2014-03-05 07:25:18

标签: python tree

我需要在python中实现一个And /或树,这样我才能评估布尔表达式, 我想到了创建一个包含andNodeorNodeleafNode的类。前两个是必须具有和或或值的内部节点,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

我需要测试树中是否存在元素,高度并迭代它。

1 个答案:

答案 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